MySQL优化-配置优化
2020-03-18 22:29:48 来源:admin 点击:721
说几个常用的配置
my.cnf优化
per_thread_buffers (PGA)
Read_buffer_size 表的顺序扫描,每个线程分配的缓冲区大小 128-256K
Read_rnd_buffer_size 用于表的随机读取,每个线程分配的缓冲区大小 128-256K
Sort_buffer_size 默认2M 需要调整为128-256K
Thread_stack 每个线程的堆栈大小 192K 64位 256K
Join_buffer_size 连接查询的缓冲区大小 128K-256K
Binlog_cache_size 二进制缓存 事务比较小的时候 1-2M 如果事务比较大,调大这个参数 日志设置
Max_connections 最大连接数 默认100 512-1000左右
global_buffers优化(SGA)
提高查询和更新数据的性能,用于在内存中缓存从数据文件中检索出来的数据块
Innodb_buffer_pool_size 默认128MB 设置物理内存的60%-70%
Innodb_additional_mem_pool_size 存储字典信息和其它内部数据结构 默认8M 修改为16M
innodb_log_buffer_size 事务日志原理是先将信息写入Innodb_log_buf,当日志缓冲区写满或者满足设置的相应条件才会同步文件到磁盘中,默认8M, 16M-64M
Key_buffer_size:索引缓存的大小
Myisam存储引擎中:key_buffer_size 用于设置索引块缓存的大小
Innodb:设置64M
Query_cache_size :
0 禁止缓存 1 启用缓存 2 启用缓存,只缓存SELECT SQL_CACHE。。子句的查询结果集
主要对DDL和DML语句有性能影响
考虑缓存区的维护成本,要考虑查询缓存区的命中率以及内存使用率
Mysql>=5.6 innodb_page_size 数据页默认为16K,
CPU压力较小 读写操作频繁
8K CPU的压力是16K的1.5-2倍左右,select吞吐量要高于16KB
数据库量级别: GB为单位,数据量在亿级以上,服务器内存在64GB以上
I/O设置优化:
1、RAID 选择合适的磁盘阵列 RAID10 数据读写的可靠性
2、使用操作系统的Symbolic Links分布I/O 将不同数据库的数据库、数据表、索引执行在不同的物理磁盘上
3、Table_cache和临时表的优化
Table_cache 设置缓存表的最大数目 show variables like 'table_cache' show variables like ‘open_tables’
4G内存 2048 加快执行速度,会让产生死锁的几率增加
临时表的优化:group by order by distinct union from子查询
Show global status like ‘created_tmp%’;
Max_heap_table_size 数据表的最大长度 存在text/blob字段时会使用磁盘临时表
Tmp_table_size 内存临时表最大值 /tmp 200M
我发现一个好用的优化软件,http://tools.percona.com/wizard,试试就知道好,哈哈