-|--010-56122325_www.9001b.com澳门金沙
js7111.com
您的位置: » » Linux情况MySQL服务器级优化解说

常见问题

Linux情况MySQL服务器级优化解说
2013-03-26 18:26

本节简朴引见了如安在级优化的机能,和进步数据库机能涉及到的硬件题目。挑选一个只管快的体系,运用黑白常轻易想到的要领。关于数据库保卫顺序,既能够正在编译时便供应适宜的参数,也能够正在选项文件中供应需求优化的参数。

  前面各段引见了一般的 用户应用表建立和索引操纵,和应用查询的编写可以或许停止的优化。不外,借有一些只能由 MySQL 管理员和系统管理员去完成的优化,这些管理员正在 MySQL 服务器或运转 MySQL 的机械上具有控制权。有的服务器参数间接适用于查询处置惩罚,可将它们翻开。而有的硬件设置题目间接影响查询处置惩罚速度,应当对它们停止调解。

  题目

  正如前面所述,磁盘寻道是一个机能的大瓶颈。当数据最先增进致使缓存变得不可能时,这个问题变得愈来愈显着。对库,正在那您或多或少天要随机存取数据,您能够依托你将最少需求一次磁盘寻道来读取而且频频磁盘觅讲写入。为了使这个问题最小化,运用有低寻道工夫的磁盘。

  为了增添可用磁盘轴的数目(而且从而削减觅讲开消),标记连接文件到差别磁盘或支解磁盘是能够的。

  1、运用标记衔接

  那意味着你将索引/数据文件标记从一般的数据目次链接到其他磁盘(那也能够被支解的)。那使得觅讲和读取工夫更好(若是磁盘不消于其他事变)

  2、支解

  支解意味着您有很多磁盘并把第一块放正在第一个磁盘上,正在第二块放正在第二个磁盘上,而且第 n块正在第(n mod number_of_disks)磁盘上,等等。那意味着,若是您的一般数据大小于支解巨细(或完善天分列过),你将获得较好一些的机能。注重,支解是不是很依赖于和支解巨细。因而用差别的支解巨细测试您的应用程序。睹10.8 运用你自己的基准。注重对支解的速度差别很依赖于参数,取决于您怎样支解参数和磁盘数目,您能够得出以数量级的差别。注重您必需挑选为随机或递次存取优化。

  为了牢靠,您能够想要运用攻击RAID 0+1(支解+镜像),然则在这种情况下,你将需求2*N个驱动器去生存N个驱动器的数据。若是您有钱,那能够是最好的挑选!但是您也能够必需投资一些卷管理软件投资以高效天处置惩罚它。

  一个择是让稍主要的数据(它能再生)上存在RAID 0磁盘上,而将确切主要的数据(像主机信息和日记文件)存在一个RAID 0+1或RAID N磁盘上。若是由于更新奇偶位您有很多写入,RAID N能够是一个题目。

  您也能够对数据库运用的文件系统设置参数。一个轻易的改动是以noatime选项挂装文件系统。那是它跳过更新正在inode中的最初接见工夫,并且那将制止一些磁盘觅讲。

  硬件题目

  可应用硬件天改进服务器的机能:

  1、正在机械中安装更多的内存。如许可以或许增添服务器的高速缓存和缓冲区的尺寸,使服务器更常常天运用寄存正在内存中的信息,低落从磁盘与信息的要求。

  2、若是有充足的 RAM 使一切交流正在内存文件系统中完成,那么应当重体系,去掉一切磁盘交流设置。不然,纵然有足以知足交流的 RAM,某些体系仍旧要取磁盘停止交流。

  3、增添更快的磁盘以削减 I/O 等待时间。觅讲工夫是这里决意机能的主要因素。逐字天挪动磁头是很慢的,一旦磁头定位,从磁道读块则较快。

  正在差别的物理装备上想法从新分派磁盘运动。若是能够,应将您的两个最忙碌的数据库寄存正在差别的物理装备上。请注重,运用统一物理装备上的差别分区是不敷的。如许没有资助,由于它们仍将争用雷同的物理资本(磁盘头)。挪动数据库的历程正在第 10 章中引见。

  4、正在将数据从新放到差别装备之前,应当包管相识该体系的装载特性。若是正在特定的物理装备上曾经有了某些特定的重要运动,将数据库放到该处实际上可能会使机能更坏。比方,不要把数据库移到处置惩罚大量Web的装备上。

  5、正在设置 MySQL 时,应当设置其运用静态库而不是同享库。运用同享库的静态二进制体系可节约磁盘空间,但静态二进制体系更快(但是,若是期望装入用户自定义的函数,则不克不及运用静态二进制体系,由于 UDF 机制依赖于静态衔接)。

  服务器参数的挑选

  服务器有几个可以或许改动从而影响其操纵的参数(或称变量)。体系变量确当前值能够经由过程实行mysqladmin varibles下令去搜检,个中几个参数重要取查询有关,有必要正在此提一下:

  delayed_queue_size

  此参数正在实行其他 INSERT DELAYED 语句的客户机壅塞之前,肯定来自 INSERT DELAYED 语句的放入行列的止的数量。增添这个参数的值使服务器能从这类恳求中吸收更多的止,因此客户机能够继承实行而不壅塞。

  key_buffer_size

  此参数为用来寄存索引块的缓冲区尺寸。若是内存多,增添这个值能节约索引建立和修正的工夫。较大的值使 MySQL 能正在内存中更多的索引块,如许增添了正在内存中找到键值而不消读磁盘块的可能性。

  正在 MySQL 3.23 版及今后的版本中,若是增添了键缓冲区的尺寸,能够借期望用 --init-file 选项启动服务器。如许可以或许指定一个服务器启动时实行的 SQL 语句文件。若是有想要寄存正在内存中的只读表,可将它们拷贝到索引查找异常快的 HEAP 表。

  back_log

  引入客户机衔接恳求的数目,这些恳求正在从当前客户机中处置惩罚时列队。若是您有一个很忙的站点,能够增添改变量的值。

  编译和链接如何影响MySQL的速度

  大多数以下测试正在上并用MySQL基准停止的,然则它们应当对其他和事情负载给出一些指导。

  当您用-static链接时,您获得最快的可执行文件。运用套接字而非衔接一个数据库也可给出好一些的机能。

  正在Linux上,当用pgcc和-O6编译时,你将获得最快的代码。为了用这些选项编译“sql_yacc.cc”,您需求约莫200M内存,由于gcc/pgcc需求许多内存使一切函数嵌入(inline)。正在设置MySQL时,您也应当设定CXX=gcc以制止包孕libstdc++库(它不需要)。

  只经由过程运用一个较好的编译器或较好的编译器选项,正在运用中您能获得一个10-30%的减速。若是你自己编译SQL服务器,那稀奇主要!

  正在上,您应当比方运用pgcc或Cygnus CodeFusion编译器获得最大速度。我们曾经测试了新的 Fujitsu编译器,然则它是借出充足不失足去优化编译MySQL。

  这里是我们做过的一些丈量表:

  ·若是您以-O6运用pgcc而且编译任何器械,mysqld服务器是比用gcc快11%(用字符串99的版本)。

  ·若是您静态天链接(没有-static),效果缓了13%。注重您仍能运用一个静态衔接的MySQL库。只要服务器对机能是要害的。

  ·若是您运用TCP/IP而非Unix套接字,效果缓7.5%。

  ·正在一个 SPARCstation 10上,gcc2.7.3是比Sun Pro C++ 4.2快13%。

  ·正在Solaris 2.5.1上,正在单个上MIT-pthreads比带原生线程的Solaris缓8-12%。以更多的负载/cpus,差异应当变得更大。

  由TcX供应的MySQL-Linux的分发用pgcc编译并静态链接。

  总结

  本节简朴引见了如安在服务器级优化数据库的机能,和进步数据库机能涉及到的硬件题目。挑选一个只管快的体系,运用RAID磁盘阵列黑白常轻易想到的要领。

  关于数据库保卫顺序,既能够正在编译时便供应适宜的参数,也能够正在选项文件中供应需求优化的参数。

  思考题

  1、运用ANALYSE历程剖析语句SELECT * FROM pet,判定是不是有必要改动列的范例。

  2、如今让您需求优化表pet,能够用那些手腕做到?