首页 > 数据库 > MySQL > MYSQL 优化注意事项
一.OS层面优化
1.swap
vm.swappiness = 10 内存使用率 90% 时才会使用swap
vm.min_free_kbytes OS保留内存
vm.vfs_cache_pressure控制内核回收文件系统缓存的积极程度
2.大内存页
vm.nr_hugepages 大内存页数 ORACLE SGA MYSQL INNODB_BUFFER
vm.hugetlb_shm_group = 666 哪个组id使用大内存页
3.禁止操作系统更新文件的atime属性
/etc/fstab指定属性default->noatime 然后重新挂载。
4.IO调度算法
数据库环境选择deadline。其他SSD环境选择noop
vi /etc/default/grub
GRUB_CMD LINE_LINUX="elevator=deadline"
grub2-mkconfig -o /etc/grub2.cfg
cat /sys/block/sf/queue/scheduler
5.关闭NUMA
vi /etc/default/grub
GRUB_CMD LINE_LINUX="numa=off"
grub2-mkconfig -o /etc/grub2.cfg
6.CPU优化检查CPU是否开启了节能优化
grep - E 'model name'cpu MHz' /proc/cpuinfo
确认当前主频和标地主频是否一样。不一样就是开启了节能模式
二、数据库层面优化指标
1.千万级/亿级表如何优化
(1).优化SQL
(2).前端加缓存memcached,redis
(3).读写分离
(4).表分区
(5).分表分库-垂直拆分
(6).分表分库-水平拆分
2.慢查询
slow_query_log=ON
slow_query_log_file
long_query_time=10
log_queries_not_using_indexes=1 --记录没有使用INDEX的语句
min_examined_row_limit=1000 --记录执行大于1000次的慢查询
log_slow_admin_statements=1
log_slow_slave_statements=1
3.连接数
max_connections
max_used_connections
4.table open情况
参数table_open_cache: MYSQL服务可缓存打开表描述符的数量,减少频繁开关表的开销
关联参数open_tables/open_tables>=85%
5.thread_cache_size
MySQL服务缓存的空间线程数量
show global status like 'Thread';
threads_created 累计创建的线程数
threads_cached 当前缓存的空间线程数
6.文件打开数
open_files 当前打开文件数
open_files_limit 限制参数
7.表锁情况
show global status like 'table_locks';
8.表扫描情况
show global status like 'handler_read';
show global status like 'com_select';
表扫描率 = handler_read_rnd_next / com_select 过高则需要优化索引
9.计算QPS
show global status like '%Question%';
show global status like '%uptime%';
QPS=Question/uptime
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15412087/viewspace-3109966/ ,如需转载,请注明出处,否则将追究法律责任。