从编译到工具:几种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
------------------------------------------------------------------------------
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]标题下插入变量设置.
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表.
本文地址: | 与您的QQ/BBS好友分享! |