mysql的优化

1/dev/sda2 /usr/lib/mysql  ext3 noatime,nodiratime,data=writeback 0 1

2o_direct 选项

3.xfs 文件系统

4cat /proc/sys/vm/swappiness

5.sync_binlog

6.innodb_flush_log_at_trx_commit=1

expire_logs_days

8.innodb_thread_concurrency 变量,一次性有多少线程进入内核,0表示不限制。这个变量的值一般是cpu数量*磁盘数量*2

9.innodb_thread_sleep_delay(如果已经进入内核的线程操作了允许的数量,新的线程就无法再进入内核,innodb使用两段处理来尝试让线程尽可能高效的进入内核,两段策略减少了因操作系统调度引起的上下文切换,线程第一次休眠innodb_thread_sleep_delay微妙,然后重试,如果它依然不能进入内核,则放入一个等待线程队列,让操作系统来处理)

10.innotop 监控

11.pt-query-digest 创建查询报告

12.substring函数把blob值转换成varchar

13.创建processlist快照,通过state或者command字段来聚合它们

14临时表的优化,让临时表运行更快的最好方式是,把它们放在基于内存的文件系统(gun/linux上是tmpfs),这会降低一些开销,尽管这依然比内存表慢很多。因为操作系统会避免把数据写到磁盘,所以内存文件系统可以帮助提升性能,一般的文件系统也会在内存中缓存,但是操作系统会每隔几秒就刷新一次,tmpfs文件系统从来不会刷新(怎么做到的呢?),它就是为低开销和简单起见而设计的。没必要为这个文件系统预备任何恢复方案,这使得它更快。

服务器设置里控制临时表文件放在哪的是tmpdir,建议监控文件系统使用率以保证有足够的空间来存放临时表,如果需要,可以指定多个临时表存放位置,mysql将会轮训使用。

15.如果blob列非常大,并且用的是innodb,也许可以增大innodb日志缓冲大小。

 

posted on 2014-08-15 06:42  zitong  阅读(178)  评论(0编辑  收藏  举报