MySQL优化简明指南[MySQL防范]
本文“MySQL优化简明指南[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、在编译时优化MySQL
假如你从源代码分发安装MySQL,要注意,编译历程对今后的目标程序性能有重要的影响,差别的编译方法大概得到近似的目标文件,但性能大概相差很大,因此,在编译安装MySQL适应细心按照你的利用范例挑选最大概好的编译选项.这种定制的MySQL可认为你的利用供应最佳性能.
本领:选用较好的编译器和较好的编译器选项,这样利用可提高性能10-30%.(MySQL文档如是说)
1.1、利用pgcc(Pentium GCC)编译器
该编译器(http://www.goof.com/pcg/)针对运行在奔腾处理器系统上的程序举行优化,用pgcc编译MySQL源代码,总体性能可提高10%.当然假如你的服务器不是用奔腾处理器,就没必要用它了,因为它是专为奔腾系统计划的.
1.2、仅利用你想利用的字符集编译MySQL
MySQL目前供应多达24种差别的字符集,为环球用户以他们自己的语言插入或查看表中的数据.却省情形下,MySQL安装全部者这些字符集,热但是,最好的挑选是指挑选一种你需求的.如,禁止除Latin1字符集以外的全部别的字符集:
--------------------------------------------------------------------------------
%>./configure -with-extra-charsets=none [--other-configuration-options]
--------------------------------------------------------------------------------
1.3、将mysqld编译成静态履行文件
将mysqld编译成静态履行文件而无需同享库也能得到更好的性能.通过在配置时指定下列选项,可静态编译mysqld.
--------------------------------------------------------------------------------
%>./configure -with-mysqld-ldflags=-all-static [--other-configuration-options]
--------------------------------------------------------------------------------
1.4、配置样本
下列配置号令常用于提高性能:
--------------------------------------------------------------------------------
%>CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared
--------------------------------------------------------------------------------
iTbulo.comdcIzj
2、调整服务器
确保应用精确的编译当然重要,但这只是成功的第一步,配置众多的MySQL变量一样对服务器的正常运行起关键作用.你可以将这些变量的赋值存在一个配置文件中,以确保它们在每次启动MySQL时均起作用,这个配置文件就是my.cnf文件.
MySQL已经供应了几个my.cnf文件的样本,可在/usr/local/mysqld/share/mysql/目录下找到.这些文件辨别命名为my-small.cnf、 my-medium.cnf、my-large.cnf和my-huge.cnf,规模阐明可在描写配置文件实用的系统范例标题中找到.假如在只有相当少内存的系统上运行MySQL,并且只是无意的用一下,那么my-small.cnf会对比抱负,因为它号令mysqld只利用最少的资源.近似地,假如你筹划构建电子商务超市,并且系统拥有2G内存,那么你大概要用到mysql-huge.cnf文件了.
为了操纵这些文件中的一个,你需求复制一个最合适需求的文件,改名为my.cnf.你可以挑选利用配置文件三种作用范围的一种:
Global:将my.cnf文件复制到服务器的/etc目录下,这使得配置文件中的变量作用于全局,即对全部服务器上的MySQL数据库服务器有效.
Local:将my.cnf文件复制到[MYSQL-INSTALL-DIR]/var/目录下,使得my.cnf作用于特定的服务器.[MYSQL-INSTALL-DIR]表示MySQL安装目录.
User:你可以再限制作用于特定的用户,将my.cnf复制到用户的根目录下.
毕竟若何设置my.cnf中的这些变量呢?更进一步说,你可以设置哪一个变量.固然所用变量对MySQL服务器相对通用,每一个变量与MySQL的的某些组件有更特定的关系.如变量max_connects归在mysqld类别下.履行下列号令便可知道:
--------------------------------------------------------------------------------
%>/usr/local/mysql/libexec/mysqld --help
--------------------------------------------------------------------------------
它显示大量的选项及与mysqld相关的变量.你可以很简单地在该行文字之下找出变量:
--------------------------------------------------------------------------------
Possible variables for option --set-variable (-O) are
--------------------------------------------------------------------------------
然后你可以以下设置my.cnf中的那些变量:
--------------------------------------------------------------------------------
set-variable = max_connections=100
--------------------------------------------------------------------------------
它设置MySQL服务器的最大并发衔接数为100.要确保在my.cnf文件中的[mysqld]标题下插入变量设置.
iTbulo.comdcIzj
3、表范例
很多MySQL用户大概很惊奇,MySQL确切为用户供应5种差别的表范例,称为DBD、HEAP、ISAM、MERGE和MyIASM.DBD归为事件安全类,而其他为非事件安全类.
3.1、事件安全
DBD
Berkeley DB(DBD)表是支持事件处理的表,由Sleepycat软件公司(http://www.sleepycat.com)开辟.它供应MySQL用户等待已久的功效-事件掌握.事件掌握在任何数据库系统中都是一个极有代价的功效,因为它们确保一组号令能成功地履行.
3.2、非事件安全
HEAP
HEAP表是MySQL中存取数据最快的表.这是因为他们利用存储在动态内存中的一个哈希索引.另一个要点是假如MySQL或服务器崩溃,数据将丧失.
ISAM
ISAM表是早期MySQL版本的缺省表范例,直到MyIASM开辟出来.倡议不要再利用它.
MERGE
MERGE是一个风趣的新范例,在3.23.25之后呈现.一个MERGE表实际上是一个相同MyISAM表的调集,归并成一个表,主如果为了效率缘由.这样可以提高速度、搜索效率、修复效率并节俭磁盘空间.
MyIASM
这是MySQL的缺省表范例.它基于IASM代码,但有很多有效的扩大.MyIASM对比好的缘由:
MyIASM表小于IASM表,所以利用较少资源.
MyIASM表在差别的平台上二进制层可移植.
更大的键码尺寸,更大的键码上限.
3.3、指定表范例
你可在成立表时指定表的范例.下例成立一个HEAP表:
--------------------------------------------------------------------------------
mysql>CREATE TABLE email_addresses TYPE=HEAP (
->email char(55) NOT NULL,
->name char(30) NOT NULL,
->PRIMARY KEY(email) );
--------------------------------------------------------------------------------
BDB表需求一些配置工作,拜见http://www.mysql.com/doc/B/D/BDB_overview.HTML.
3.4、更多的表范例
为了使MySQL管理工作更风趣,行将公布的MySQL 4.0将供应两种新的表范例,称为Innobase和Gemeni.
4、优化工具
MySQL服务器本身供应了几条内置号令用于帮忙优化.
4.1、SHOW
你大概有爱好知道MySQL服务器毕竟更了什么,下列号令给出一个总结:
--------------------------------------------------------------------------------
mysql>show status;
--------------------------------------------------------------------------------
它给出了一个相当长的状况变量及其值的列表.有些变量包含了非常终止客户的数目、非常终止衔接的数目、衔接尝试的次数、最大并发衔接数和大量其他有效的信息.这些信息对找出系统问题和低效极具代价.
SHOW还能做更多的事情.它可以显示关于日记文件、特定数据库、表、索引、进程和权限表中有代价的信息.详见MySQL手册.
4.2、EXPLAIN
当你面对SELECT语句时,EXPLAIN注释SELECT号令若何被处理.这不但对决意能否应当增添一个索引,并且对决意一个复杂的Join若何被MySQL处理都是有帮忙的.
4.3、OPTIMIZE
OPTIMIZE语句答应你恢复空间和归并数据文件碎片,对包含变长行的表举行了大量更新和删除后,这样做分外重要.OPTIMIZE目前只工作于MyIASM和BDB表.iTbulo.comdcIzj
本文地址: | 与您的QQ/BBS好友分享! |