实现WL #5538 InnoDB全文搜索支持与合并 - https://github测试数据/mysql/mysql-server/commit/b6169e2d944 - 也存在同样的问题问题
修复方法
We have a few options to fix this:
Change implementation of InnoDB fulltext index
Use custom memory library like jemalloc
Both have their advantages and disadvantages.
我们有两种方法来修复这个问题:
1.修改InnoDB全文索引的实现
2.使用自定义内存库,例如 jemalloc
这两种方法都有各自的优缺点。
Option 1 means we are introducing an incompatibility with upstream, which may lead to strange bugs in future versions. This also means a full rewrite of the InnoDB fulltext code which is always risky in GA versions, used by our customers.
方法1 意味着我们引入了与软件上游不兼容性的风险,这可能会导致新版本中出现未知的错误。也意味着彻底重写InnoDB全文索引部分代码,这在用户们使用的GA版本中是有风险的。
Option 2 means we may hit flaws in the jemalloc<链接5> library which is designed for performance and not for the safest memory allocation.
方法2 则意味着我们可能会命中一些jemalloc库中专门为性能设计但不是最安全的内存分配的bug。
So we have to choose between these two not ideal solutions.
Since option 1 may lead to a situation when Percona Server will be incompatible with upstream, we prefer option 2and look forward for the upstream fix of this bug.
因此我们不得不在这两个并不完美的方法中选择一个。
鉴于方法一可能导致percona服务与上游的不兼容,我们更倾向于用方法二来解决问题,并期待着上游修复这个bug。
结论
If you are seeing a high memory usage by the mysqld process, it is not always a symptom of a memory leak. You can use memory instrumentation in Performance Schema to find out how allocated memory is used. Try alternative memory libraries for better processing of allocations and freeing of memory. Search the user manual for LD_PRELOADto find out how to set it up at these pages here and here.
如果发现mysqld进程占用内存很高,并不代表一定是内存泄漏。我们可以在Performance Schema中使用内存检测来了解进程是如何使用已分配的内存。也可以尝试替换内存库来更好地处理内存分配与释放。关于LD_RELOAD如何配置,请查阅MySQL用户手册对应页面 mysqld-safe<链接6>和using-system<链接7>。
以上就是闲谈 MySQL内存管理,内存分配器和操作系统的详细内容!
查看更多关于闲谈 MySQL内存管理,内存分配器和操作系统的详细内容...