MySQL MyISAM优化设置点滴

先说一点问题:sql

 
Mysql中的InnoDB和MyISAM是在使用MySQL中最经常使用的两个表类型,各有优缺点.两种类型最主要的差异就是 InnoDB 支持事务处理与外键和行级锁.而MyISAM不支持.因此Myisam每每就容易被人认为只适合在小项目中使用。可是从数据库需求角度讲,要求99.9%的稳定性,方便的扩展性和高可用性来讲的话,那MyISAM绝对应该是首选。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快, 只是不提供事务支持.大部分项目是读多写少的项目,而Myisam的读性能是比innodb强很多的.
 
优化设置:
key_buffer_size – 这对MyISAM表来讲很是重要。若是只是使用MyISAM表,能够把它设置为可用内存的 30-40%。可是注意,分多少内存应该是根据需求决 定,而不是无论什么机器,都砍掉一半内存用做 key_buffer_size .合理的值取决于索引大小、数据量以及负载 — 记住,MyISAM表会使用操做系统的缓存来缓存数据,所以须要留出部份内存给它们,不少状况下数据比索引大多了。能够经过SHOW GLOBAL STATUS 时的 Key_blocks_unused来查看,只要还有剩余,就说明 key_buffer_size 没用满。若是你不多使用MyISAM表,那么也保留低于 16-32MB 的 key_buffer_size 以适应给予磁盘的临时表索引所需。
 

query_cache — 若是你的应用程序有大量读,并且没有应用程序级别的缓存,那么这颇有用。不要把它设置太大了,由于想要维护它也须要很多开销,这会致使MySQL变慢。通 常设置为 32-512Mb。设置完以后最好是跟踪一段时间,查看是否运行良好。在必定的负载压力下,若是缓存命中率过低了,就启用它。数据库

sort_buffer_size –若是你只有一些简单的查询,那么就无需增长它的值了,尽管你有 64GB 的内存。搞很差也许会下降性能。
 
query_cache_size -查询缓冲常被用来缓冲 SELECT 的结果而且在下一次一样查询的时候再也不执行直接返回结果.打开查询缓冲能够极大的提升服务器速度, 若是你有大量的相同的查询而且不多修改表.查看 “Qcache_lowmem_prunes” 状态变量来检查是否当前值对于你的负载来讲是否足够高.注意: 在你表常常变化的状况下或者若是你的查询原文每次都不一样,查询缓冲也许引发性能降低而不是性能提高.注意:设置query_cache_limit,只有小于此设定值的结果才会被缓冲, 此设置用来保护查询缓冲,防止一个极大的结果集将其余全部的查询结果都覆盖.
 
 
bulk_insert_buffer_size -MyISAM 使用特殊的相似树的cache来使得突发插入, (这些插入是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA INFILE) 更快. 此变量限制每一个进程中缓冲树的字节数. 设置为 0 会关闭此优化.为了最优化不要将此值设置大于 “key_buffer_size”.当突发插入被检测到时此缓冲将被分配.
 
 
read_rnd_buffer_size -当在排序以后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道.若是你增高此值,能够提升不少ORDER BY的性能.当须要时由每一个线程分配
 
 
thread_cache_size - 咱们在cache中保留多少线程用于重用,当一个客户端断开链接后,若是cache中的线程还少于thread_cache_size,则客户端线程被放入cache中.这能够在你须要大量新链接的时候极大的减小线程建立的开销
 
 
附录:适用于日IP 50-100w,PV 100-300w的站点,针对Dell R710,双至强E5620、16G内存的硬件配置。CentOS 5.6 64位系统,MySQL 5.5.x 稳定版的部分数据库配置文件,供你们参考
 
back_log = 300
max_connections = 3000
max_connect_errors = 30
table_cache = 4096
max_allowed_packet = 32M
#external-locking
#skip-networking
binlog_cache_size = 4M
max_heap_table_size = 128M
sort_buffer_size = 16M
join_buffer_size = 16M
thread_cache_size = 16
thread_concurrency = 8
query_cache_size = 128M
ft_min_word_len = 8
#memlock
thread_stack = 512K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 128M
#log_slave_updates
#log
#log_warnings
log_slow_queries
long_query_time = 6
log_long_format
相关文章
相关标签/搜索