小妖女 发表于 2015-1-16 22:34:05

MYSQL教程之优化MYSQL服务器

那时候Sybase已经诞生了6年的时间。至于其他值得关注的开源数据库,PostgreSQL将在2009年达到20岁的生日。虽然MySQL并不是市场上最年轻的数据库,但是却有更多成熟的数据库可供我们选择。mysql|服务器|优化MySQL服务器有几个影响其操纵的参数(变量)。假如缺省的参数值分歧适,能够将其修正为对服务器运转情况更符合的值。比方,假如您有大批的内存,能够告知服务为磁盘和索引操纵利用较年夜的缓冲区。这将使内存持有更多的信息并削减了必需举行的磁盘会见的数
量。假如是一样平常的体系,能够告知服务器利用较小的缓冲区,以避免它侵扰体系资本伤害其他的历程。
体系变量确当前值能够经由过程实行mysqladminvariables命令来反省。变量可使用--set-variablevar_name=value选项在命令行设置(-ovar_name=value是等价的)。假如要想设置几个变量,可以使用多个--set-variable选项,还可使用以下语法在一个选项文件的组中设置变量:
set-variale=var_name=value
在附录E的mysql程序的条目下给出了服务器变量的全体清单。有关功能优化对照经常使用的变量已在以以下表中给出。您还能够在MySQL参考手册的“从MySQL中取得最高功能”一章中找到该主题的附加会商。
back_log引进的客户机毗连哀求的数目,这些哀求在从以后客户机中处置时列队。假如您有一个很忙的站点,能够增添该变量的值。
delayed_queue_size此变量把持被列队的INSERTDELAYED语句中的行数。假如该行列已满,则更多的INSERTDELAYED将梗塞,直到行列有空间为止,如许可避免公布那些语句的客户机持续举行操纵。假如您有很多实行这类INSERT的客户机,且发明它们正在梗塞,那末应增添该变量,使更多的客户机更快地举行事情(INSERTDELAYED在4.5节“调剂与锁定成绩”中会商)
flush_time假如体系有成绩而且常常锁逝世或从头引诱,应将该变量设置为非零值,这将招致服务器按flush_time秒来革新表的高速缓存。用这类办法来写出对表的修正将下降功能,但可削减表讹误或数据丧失的时机。
在Windows中,能够在命令行上用--flush选项启动服务器,以迫使表的修正在每次更新后被革新。
key_buffer_size用于寄存索引块缓冲区的巨细。假如增添该变量值,将加速创立和修正索引操纵的工夫。值越年夜MySQL就越有大概在内存中查找键值,这将削减索引处置所需的磁盘会见次数。
在MySQL3.23之前的版本中,该变量名为key_buffer。MySQL3.23及厥后的版本同时辨认这两个名字。
max_allowed_packet客户机通讯所利用的缓冲区巨细的最年夜值。假如有客户秘密发送大批的BLOB或TEXT的值,该服务器变量值大概必要增年夜。
客户机今朝利用巨细为24MB的缺省缓冲区。假如有利用较小缓冲区的旧客户机。大概必要使该客户机的缓冲区年夜一些。比方,mysql能够按以下挪用来指定一个24MB信息包的限定值:
mysql--set-varibalemax_allowed_packet=24M
max_connections服务器同意的客户机同时毗连的最年夜数目。假如服务器忙碌,大概必要增添该值。比方,假如您的MySQL服务器被Web服务器利用来处置由DBI或PHP剧本发生的查询,而且另有大批的Web通讯,假如该变量设置太低的话,则您站点的会见者会发明哀求被回绝。
table_cache表的高速缓存的巨细。增添该值可使mysqld坚持更多的表,同时翻开并削减必需举行的文件翻开和封闭操纵的次数。
假如增添了max_connections或table_cache值的巨细,服务器将必要大批的文件形貌符。这将引发有关操纵体系对文件形貌符总历程数目限制的成绩,在这类情形下您必要增添该限定值或慢慢办理它。因为增添文件形貌符数目的限定值,历程会产生变更,以是您大概会在一个运转剧本中利用ulimit命令时来如许做,该剧本可用于启动服务器,或用于从头设置您的体系。有些体系能够经由过程编纂体系形貌文件来复杂地设置和从头引诱。关于其他一些体系,则必需编纂一个内核形貌文件偏重建该内核。怎样持续举行下往,请参考您体系的文档。
办理总历程文件形貌符限定的一个办法是:将数据目次分别成多个数据目次并运转多个服务器。如许,经由过程运转多个服务器使可用的形貌符数目成倍增加。但另外一方面,其他的庞大要素大概会引发成绩。因为定名了两个服务器,您不克不及从一个单个的服务器上会见分歧数
据目次中的数据库,而且还必要在分歧服务器之间复制受权表的权限,以便用户必要会见一个以上的服务器。
有两个变量是办理员为进步功能经常增添的,它们是record_buffer和sort_buffer。这些缓冲区在毗连和分类操纵中利用,但其值是属于每一个毗连的。也就是说,每一个客户机都取得属于本人的缓冲区。假如使这些变量的值很年夜,功能大概会因为高贵的体系资本的损耗而蒙受实践的丧失。假如想要修正这些变量,先实行mysqladminvariables检察一下它们以后的值,然后增量调剂其值。这个操纵使您能估量为削减严峻的功能下降所举行的修正的效果。与其他数据库相比,MySQL易学易用。

深爱那片海 发表于 2015-1-19 16:30:55

至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。

蒙在股里 发表于 2015-1-27 07:54:09

其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!

莫相离 发表于 2015-2-5 04:38:40

无法深入到数据库系统层面去了解和探究

海妖 发表于 2015-2-11 04:54:36

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

灵魂腐蚀 发表于 2015-3-1 21:53:47

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

兰色精灵 发表于 2015-3-17 17:08:43

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
页: [1]
查看完整版本: MYSQL教程之优化MYSQL服务器