日期:2013-03-25  浏览次数:20322 次


    4.6 管理员的优化
    前面各段引见了普通的MySQL用户利用表创建和索引操作,以及利用查询的编写能够进行的优化。不过,还有一些只能由MySQL管理员和系统管理员来完成的优化,这些管理员在MySQL服务器或运转MySQL的机器上具有控制权。有的服务器参数直接适用于查询处理,可将它们打开。而有的硬件配置问题直接影响查询处理速度,应该对它们进行调整。
    4.6.1服务器参数
    服务器有几个能够改变从而影响其操作的参数(或称变量)。有关服务器参数优化的综合引见请参见第11章,但其中几个参数次要与查询有关,有必要在此提一下:
    ■ delayed _ queue _ size
    此参数在执行其他INSERT DELAYED 语句的客户机阻塞以前,确定来自INSERT DELAYED 语句的放入队列的行的数目。添加这个参数的值使服务器能从这种请求中接收更多的行,因此客户机可以继续执行而不阻塞。
    ■ key _ buffer _ size
    此参数为用来存放索引块的缓冲区尺寸。如果内存多,添加这个值能节省索引创建和修正的时间。较大的值使MySQL能在内存中存储更多的索引块,这样添加了在内存中找到键值而不用读磁盘块的可能性。在MySQL3.23 版及当前的版本中,如果添加了键缓冲区的尺寸,可能还希望用- - init -file 选项启动服务器。这样能够指定一个服务器启动时执行的SQL 语句文件。如果有想要存放在内存中的只读表,可将它们拷贝到索引查找非常快的HEAP 表。
    4.6.2 硬件问题
    可利用硬件更无效地改善服务器的功用:
    ■ 在机器中安装更多的内存。这样能够添加服务器的高速缓存和缓冲区的尺寸,使服务器更经常地使用存放在内存中的信息,降低从磁盘取信息的要求。
    ■ 如果有足够的RAM 使所有交换在内存文件系统中完成,那么应该重新配置系统,去掉所有磁盘交换设置。否则,即便有足以满足交换的R A M,某些系统仍然要与磁盘进行交换。
    ■ 添加更快的磁盘以减少I/O 等待时间。寻道时间是这里决定功用的次要要素。逐字地挪动磁头是很慢的,一旦磁头定位,从磁道读块则较快。
    ■ 在不同的物理设备上设法重新分配磁盘活动。如果可能,应将您的两个最繁忙的数据库存放在不同的物理设备上。请留意,使用同一物理设备上的不同分区是不够的。这样没有协助,由于它们仍将争用相反的物理资源(磁盘头)。挪动数据库的过程在第10
章中引见。
    在将数据重新放到不同设备之前,应该保证了解该系统的装载特性。如果在特定的物理设备上曾经有了某些特定的次要活动,将数据库放到该处实际上可能会使功用更坏。例如,不要把数据库移四处理大量Web 通信的Web 服务器设备上。
    ■ 在设置MySQL时,应该配置其使用静态库而不是共享库。使用共享库的动态二进制系统可节省磁盘空间,但静态二进制系统更快(然而,如果希望装入用户自定义的函数,则不能使用静态二进制系统,由于UDF 机制依赖于动态连接)。