日期:2013-09-10  浏览次数:20454 次


#######################################
#文件名:mysqloptimize,php                           #
#主题: mysql数据库的优化                  #
#作者: _Shakespeare(网络骑士)                    #
#最后修正时间: 2002--09--20                      #
#e-mail: shakespareshmily@sina.com.cn         #
#######################################
下决心开始学oracle了,用mysql曾经有不短的时间了,今天写下这些算是对本人的一个mysql之旅的一个交代吧.以下仅仅是本人在使用mysql过程中的一点团体的体会,也许存在许多纰漏和错误,还请指正!!

首先,为了使一个系统更快,最重要的部分就是基础设计,不过有些东西是现无情况下无法跨越的,比如说系统常见的瓶颈.
我所能想到的:
1:磁盘寻道能力,以高速硬盘(7200转/秒),理论上每秒寻道7200次.这是没有办法改变的,优化的方法是----用多个硬盘,或者把数据分散存储.
2:硬盘的读写速度,这个速度非常的快(限于本人的知识所限,只知道在每秒几十甚至上百MB).这个更容易处理--可以从多个硬盘上并行读写.
3:cpu.cpu处理内存中的数据,当有绝对内存较小的表时,这是最常见的限制要素.
4:内存的限制.当cpu需求超出适合cpu缓存的数据时,缓存的带宽就成了内存的一个瓶颈---不过如今内存大的惊人,普通不会出现这个问题.
第二步:
(本人使用的是学校网站的linux平台(Linux ADVX.Mandrakesoft.com 2.4.3-19mdk ))
1:调理服务器参数
用shell>mysqld-help这个命令声厂一张所有mysql选项和可配置变量的表.输出以下信息:
possible variables for option--set-variable(-o) are:
back_log               current value:5  //要求mysql能有的连接数量.back_log指出在mysql暂停接受连接的时间内有多少个连接请求可以被存在堆栈中
connect_timeout        current value:5 //mysql服务器在用bad handshake(不好翻译)应对前等待一个连接的时间
delayed_insert_timeout current value:200  //一个insert delayed在终止前等待insert的时间
delayed_insert_limit    current value:50   //insert delayed处理器将检查能否有任何select语句未执行,如果有,继续前执行这些语句
delayed_queue_size     current value:1000   //为insert delayed分配多大的队
flush_time             current value:0      //如果被设置为非0,那么每个flush_time 时间,所有表都被关闭
interactive_timeout    current value:28800  //服务器在关上它之前在洋交互连接上等待的时间
join_buffer_size       current value:131072 //用与全部连接的缓冲区大小
key_buffer_size        current value:1048540  //用语索引块的缓冲区的大小,添加它可以更好的处理索引
lower_case_table_names current value:0  //                                          
long_query_time        current value:10  //如果一个查询所用时间大于此时间,slow_queried计数将添加
max_allowed_packet     current value:1048576  //一个包的大小
max_connections        current value:300   //允许同时连接的数量
max_connect_errors     current value:10   //如果有多于该数量的中缀连接,将阻止进一步的连接,可以用flush hosts来处理
max_delayed_threads    current value:15   //可以启动的处理insert delayed的数量
max_heap_table_size    current value:16777216  //
max_join_size          current value:4294967295  //允许读取的连接的数量
max_sort_length        current value:1024  //在排序blob或者text时使用的字节数量
max_tmp_tables         current value:32  //一个连接同时打开的临时表的数量
max_write_lock_count   current value:4294967295  //指定一个值(通常很小)来启动mysqld,使得在一定数量的write锁定之后出现read锁定
net_buffer_length      current value:16384  //通信缓冲区的大小--在查询时被重置为该大小