当前位置:七道奇文章资讯数据防范MySQL防范
日期:2011-05-02 15:44:00  来源:本站整理

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

  以上是“MySQL优化简明指南[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .