MySQL-优化

数据库优化
1.SQL语句优化
2.索引优化
3.数据库结构优化
4.内存优化
myisam内存优化
myisam通过key_buffer缓存引块,加速myisam索引的读写速度,
对于myisam表的数据块,MySQL没有特别的缓存机制,完全依赖于操作系统的IO缓存。
1.key_buffer_size设置
key_buffer_size决定myisam索引块缓存区的大小。
直接影响myisam表的存取效率。对于一般myisam的
数据库,建议将1/4可用内存分配给key_buffer_size。
key_buffer_size=2G;
2.read_buffer_size
如果经常扫描myisam表,可以通过增大read_buffer_size
的值来改善性能,但read_buffer_size是每个session独
占的,如果默认值设置过大,就造成内存浪费。
3.read_rnd_buffer_size
对于需要排序的myisam表查询,如带有 order by的SQL,
适当增加read_rnd_buffer_size的值,可以改善此类的SQL性能。
但read_rnd_buffer_size是每个session独
占的,如果默认值设置过大,就造成内存浪费。
innodb
用一块内存区做IO缓存池,该缓存池不仅用来缓存innodb的索引块,
而且也用来缓存innodb的数据块
1.设置innodb_buffer_pool_size
该变量决定了innodb存储引擎表数据和搜索引数据的最大缓存区大小
2.innodb_log_buffer_size
决定了innodb重做日志缓存的大小,对于可能产生大量更新记录的大
事务,增加innodb_log_buffer_size的大小,可以避免innodb在事务提交前就执行不必要
的日志写入磁盘操作。
调整mysql并发相关操作
1.调整max_connections,提高并发连接
2.调整thread_cache_size,加快连接数据库的速度,
MySQL会缓存一定数量的客户服务线程以备重用,通过参数
thread_cache_size可以控制MySQL缓存客户服务线程的数量。
3.innodb_lock_wait_timeout:控制innodb事务等待行锁的时间,对于
快速处理sql语句,可以将行锁的等待时间调小,以避免事务长时间挂起,
对于后台运行的批处理操作,可以将行锁等待时间调大,
以避免发生大的回滚操作。

1.定期分析表
ANALYSE[LOCAL|NO_WRITE_TO_BINLOG] TABLE tbl_name
2.定期检查表
CHECK TABLE tbl_name [OPTION]
check table 也可以检查视图是否有错误,比如在视图定义
中被引用的表已经不存在。
3.定期优化表
OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE tbl_name
只对myisam,bob,innodb表起作用。
对于myisam表,optimize table按如下方式操作:
如果表已经删除或分解了行,则修复表;
如果未对索引页进行分类,则进行分类;
如果表的统计数据没有更新(并且通过索引进行分类不能实现修复)
则进行更新。


获取表的相关信息
show table status like 'name'\G


posted on 2019-02-11 14:15  寻找心的巨人  阅读(64)  评论(0编辑  收藏  举报

导航