我有一台 CentOS 服务器,专门用于 MySQL 5.5(主要使用 innodb 表)。服务器有 32 GB RAM、SSD 磁盘,平均内存使用情况如下:
因此,大约有 25GB 正在使用,大约有 6.5GB 被缓存。我在 WRITE 查询中遇到了性能问题,所以我在想,这是最佳缓存大小吗?我可能会增加 innodb 缓冲区大小,这样 Linux 缓存就会变小,或者减少它,这样它就会变大。
对于 Linux 上繁忙的 MySQL 服务器来说,最佳使用/缓存内存平衡是多少?
答案1
缓存内存的存在是为了利用未使用的内存来加速请求。因此,如果您将所有内存分配给可以利用它的应用程序,您将看到性能提升。因此,回答您的问题,没有最佳平衡。
答案2
一般来说,如果您担心 MySQL 性能,我会为 MySQL 分配尽可能多的缓存。它知道要缓存什么,而操作系统缓存不知道——它只缓存经常访问的文件。
关于您的性能问题,如果可能的话,您可以尝试从 RAM 磁盘运行数据库。否则,请使用可以利用缓存设备的文件系统。
答案3
直接回答你的问题标题:不,那是一个非常糟糕的想法。
如果您将所有可用内存(+/- 几 MB)专门分配给一个程序,则任何将使用部分系统内存的其他程序(例如,如果您不时使用 find 或每天、每周运行的 cronjobs 等)都必须进行交换。
如果您的系统要进行交换,您会注意到整体性能大幅下降。