标签:performance mysql myisam mysql-5
我有一个带有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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。