mysql – MyISAM表的性能设置 – 将所有内容保存在内存中
作者:互联网
我有一个带有32 GB RAM的8核MySQL服务器,拥有40个MyISAM表(总数:~4GB数据).
由于数据库大小比可用内存小几倍,我如何充分利用我的服务器资源?
>我应该在my.cnf中尝试配置哪些设置?
>我可以强制数据索引留在内存中吗?
解决方法:
MySQL只缓存MySQL内存中的索引,而不是数据.数据仅由底层操作系统的文件系统缓存缓存.调整my.cnf最重要的值是key_buffer_size,它将为MyISAM分配内存以缓存索引.
但是,除非您有使用MyISAM表的某些特定原因,否则应将这些表转换为InnoDB.在这个时代,使用MyISAM的原因不多,MyISAM不利于并发性,数据完整性或崩溃恢复.
如果你切换到InnoDB,最重要的设置是innodb_buffer_pool_size,这是内存缓存,它将缓存数据页面和索引.其他需要考虑的事项是innodb_log_file_size,并确保设置innodb_file_per_table = 1.使用4GB的数据索引,设置innodb_buffer_pool_size = 4G是合理的.如果您在高度并发的环境中运行,则可以尝试使用innodb_thread_concurrency的值.我的建议是从innodb_thread_concurrency = 0开始,但您可能会发现有必要将它明确地设置在4-8之间,具体取决于您的工作负载和MySQL版本.
标签:performance,mysql,myisam,mysql-5 来源: https://codeday.me/bug/20190805/1591888.html