来源:自学PHP网 时间:2015-04-16 10:50 作者: 阅读:次
[导读] Mysql的性能优化主要参考文章[1],[2],和[3],其中已使用且比较有效果的有:1 实用优化(1)禁止autocommit, 防止每次插入都提交,刷新logSET autocommit=0; SQL import statements COMM...
Mysql的性能优化主要参考文章[1],[2],和[3],其中已使用且比较有效果的有: 1. 实用优化(1)禁止autocommit, 防止每次插入都提交,刷新log
SET autocommit=0; ... SQL import statements ... COMMIT;(2) 对频繁查询的字段建立索引,但要注意加入索引后,执行插入操作时会变慢
(3)当只要一行数据时使用 LIMIT 1
SELECT 1 FROM tbl_name LIMIT 1注:SELECT 1 是用来查看是否有记录的,并一般用作条件查询(normally it will be used with WHERE and often EXISTS), 返回的所有行的值都是1。效率上来说,1>anycol>*,因为不用查字典表。[4]
(4)永远为每张表设置一个ID (5)一次插入多行
INSERT INTO yourtable VALUES (1,2), (5,5), ...;
2. 配置优化
下面对Disk I/O和query_cache的优化做一个总结,并假设我们使用的机器内存为8GB。以下的参数都在文件my.cnf的[mysqld]下设置。 (1)innodb_buffer_pool_size 和 innodb_log_file_size 建议设置大小来自文章[5]
# # Set buffer pool size to 50-80% of your computer's memory innodb_buffer_pool_size=4G innodb_additional_mem_pool_size=256M # # Set the log file size to about 25% of the buffer pool size innodb_log_file_size=1G innodb_log_buffer_size=256M怎么安全的更改这个配置,来自于[6]
mysql -uroot -p... -e"SET GLOBAL innodb_fast_shutdown = 0" service mysqld stop rm -f /var/lib/mysql/ib_logfile[01] service mysqld start其中 service mysqld stop是centos下的命令,但ubuntu等其他Linux系统可能实用service mysql stop (2)query_cache_size
参数的说明见文章[7] ,但并未提到建议大小,反而提到设置太大也会有坏处。本人设置的大小如下:
query_cache_type=1 query_cache_limit=2M query_cache_size=128M其中query_chache_type=1表示打开查询缓存,query_cache_size是总的查询缓存大小,query_cahce_limit表示单个查询最大的缓存大小。
设置完之后,执行以下操作便可:
service mysqld restart(3) innodb_flush_method innodb_flush_method设置成O_DIRECT还是O_DSYNC,文章[2]中说设置成O_DIRECT会增加性能,但在文章[8]和[2]中这两个参数在实际使用时差不多,并且跟具体使用的硬件相关。所以设置成O_DIRECT是否会优化性能,还不是很确定 (4)max_allowed_packet 此参数是当网络传输数据时,需要控制的参数,如果传输的数据太大(特别是当存在large BLOB columns or long strings数据时),超过max_allowed_packet的上限时,就有可能发生错误,所以就要提高此参数。本人的设置是:
max_allowed_packet = 16M
注: 1. 查看系统变量的一些命令
show variables like 'innodb_buffer%'; SHOW GLOBAL STATUS LIKE '%innodb%'; show global status like 'Qc%';2. 本人的配置
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com