相关查看命令
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_log_files_in_group=10
myisam_max_sort_file_size = 10G
ft_min_word_len = 1 #for chinese full text search
query_cache_type = 0
log-slave-updates
调优参考计算方法:
val = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100%
设置要根据自己的实际情况来设置,如果设置的值不在合理的范围内,并不是设置越大越好,可能设置的数值太大体现不出优化效果,反而造成系统的swap空间被占用,导致操作系统变慢,降低sql查询性能.
修改配置文件的调整方法,修改my.cnf配置:
我们仍然使用两个会话,一个会话 run,用于运行主 SQL;另一个会话 ps,用于进行 performance_schema 的观察:
将 performance_schema 中的统计量重置,
临时表的表大小限制取决于参数? tmp_table_size 和 max_heap_table_size 中较小者,我们实验中以设置 max_heap_table_size 为例.
查看内存的分配记录:
查看语句的特征值:
可以看到语句使用了一次需要落磁盘的临时表.
那么这张临时表用了多少的磁盘呢?
我们开启 performance_schema 中 waits 相关的统计项:
重做实验,略过.
再查看 performance_schema 的统计值:
可以看到几个现象:
可以看到写入的线程是 page_clean_thread,是一个刷脏操作,这样就能理解数据为什么是慢慢写入的.
结论:
我们可以看到,
① MySQL 会基本遵守 max_heap_table_size 的设定,在内存不够用时,直接将表转到磁盘上存储.
①查参数配置
目前积累的使用经验中,存储过程函数触发器视图 在MySQL场景下是不适合的.性能不好,又容易发现内存不释放的问题,所以建议尽量避免.
pmap是Linux调试及运维一个很好的工具,查看进程的内存映像信息
RSS就是这个process实际占用的物理内存.
Dirty: 脏页的字节数(包括共享和私有的).
Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈).
writeable/private:进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小.
①首先使用/top/free/ps在系统级确定是否有内存泄露.如有,可以从top输出确定哪一个process.
MySQL 自身内存规划
说到 MySQL 自身的内存规划,最先想到的就是 MySQL 中各种 buffer 的大小,innodb buffer pool 就是最鹤立鸡群的那个.innodb_buffer_pool_size 参数的大小究竟如何设置,才能保证 MySQL 的性能呢?在官网文档中可以找到这个参数的一些描述:
举个栗子:
线程管理,服务器程序为了提高效率,会将一些信息存储于buffer(cache).
Memory(HEAP)引擎将数据存储在那种中内存中.
临时表如果没有超过设定的限制会存储在内存中.
全局的Buffer和Cache(比如MyISAM的keybuffer,InnoDB的buffer pool, Query cache等 )
查看mysql数据库大小的四种办法,分别有以下四种:
第一种:进去指定schema 数据库(存放了其他的数据库的信息)
use information_schema
第二种:查询所有数据的大小
第三种:查看指定数据库的大小,比如说:数据库apoyl
第四种:查看指定数据库的表的大小,比如说:数据库apoyl 中apoyl_test表
以上就是土嘎嘎小编为大家整理的怎么计算mysql内存相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!