MySQL内存相关参数

MySQL内存相关参数,第1张

相关查看命令

sql>show global variables like 'innodb_buffer_pool_size'

sql>show global status like 'Innodb_buffer_pool_pages_data'

sql>show global status like 'Innodb_page_size'

有的参数对应不同引擎,比如对于innodb引擎的,都是innodb_打头。

例如:

innodb_buffer_pool_size = 81920M

join_buffer_size = 1024M

innodb_sort_buffer_size =1024M

sort_buffer_size = 2048M

read_rnd_buffer_size = 2048M

innodb_log_buffer_size = 128M

innodb_log_file_size =2048M

innodb_log_files_in_group=10

bulk_insert_buffer_size=4096M

myisam_sort_buffer_size = 512M

myisam_max_sort_file_size = 10G

thread_cache_size = 300

ft_min_word_len = 1 #for chinese full text search

query_cache_size = 512M

query_cache_limit = 4M

query_cache_type = 0

query_cache_min_res_unit = 2k

thread_stack = 512K

tmp_table_size = 3G

max_heap_table_size = 3G

long_query_time = 3

log-slave-updates

max_binlog_cache_size = 8M

调优参考计算方法:

val = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100%

val >95% 则考虑增大 innodb_buffer_pool_size, 建议使用物理内存的75%

val <95% 则考虑减小 innodb_buffer_pool_size, 建议设置为:Innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 / (1024*1024*1024)

设置命令:set global innodb_buffer_pool_size = 2097152//缓冲池字节大小,单位kb,如果不设置,默认为128M

设置要根据自己的实际情况来设置,如果设置的值不在合理的范围内,并不是设置越大越好,可能设置的数值太大体现不出优化效果,反而造成系统的swap空间被占用,导致 *** 作系统变慢,降低sql查询性能。

修改配置文件的调整方法,修改my.cnf配置:

innodb_buffer_pool_size = 2147483648  #设置2G

innodb_buffer_pool_size = 2G  #设置2G

innodb_buffer_pool_size = 500M  #设置500M

MySQL5.7及以后版本,改参数时动态的,修改后,无需重启MySQL,但是低版本,静态的,修改后,需要重启MySQL。

mysql的最大数据存储量没有最大限制。

最多也就是单字段的长度有限制,那跟字段的数据类型有关,而对于数据表的大小一般不要超过2G,超过了效率会比较慢,建议分开多表存。

上MySQL 能承受的数据量的多少主要和数据表的结构有关,并不是一个固定的数值。表的结构简单,则能承受的数据量相对比结构复杂时大些。

据D.V.B 团队以及Cmshelp 团队做CMS 系统评测时的结果来看,MySQL单表大约在2千万条记录(4G)下能够良好运行,经过数据库的优化后5千万条记录(10G)下运行良好。

扩展资料

由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。

MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

参考资料来源:百度百科-MySQL数据库

MySQL 自身内存规划

说到 MySQL 自身的内存规划,最先想到的就是 MySQL 中各种 buffer 的大小,innodb buffer pool 就是最鹤立鸡群的那个。innodb_buffer_pool_size 参数的大小究竟如何设置,才能保证 MySQL 的性能呢?在官网文档中可以找到这个参数的一些描述:

A larger buffer pool requires less disk I/O to access the same table data more than once. On a dedicated database server, you might set the buffer pool size to 80% of the machine's physical memory size.

意思是在专用数据库服务器上,可以将 innodb_buffer_pool_size 设置为计算机物理内存大小的 80%。在许许多多前辈的的经验中了解到,此参数的值设置为物理内存的 50%~80% 颇为合理。

举个栗子:

innodb buffer pool 分配 76G,每个连接线程最大可用 160M,最大有 3000 连接数,最大可能使用内存总量 545G,但是这台实例所在服务器的物理内存仅仅有 97G,远超物理内存总量。结果可想而知,这个实例在运行中经常被 oom-killer 杀死,想必原因之一即是因为一开始 MySQL 自身的内存规划欠妥。

innodb buffer pool 缓存数据的作用相信大家都懂,比如这个 case 中,可以发现该实例为写密集,读请求很少,innodb buffer 对性能改善作用不大,80% 的内存没必要,完全可以降低到物理内存的50%。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7300973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存