LAMP服务器性能优化技巧之Mysql优化

Apache服务器优化、PHP优化、Mysql优化

对于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL and SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。如果你想建立一个.NET服务器体系,这一体系可以从多个不同平台访问数据,参与数据库的管理,那么你可以选用SQL Server服务器。如果你想建立一个第三方动态网站,从这一站点可以从一些客户端读取数据,那么MySQL将是一个不错的选择。

1、编译和安装MySQL

通过你的系统挑选可能最好的编译器,你通常可以获得10-30%的性能提高。在Linux/Intel平台上,用pgcc(gcc的奔腾芯片优化版)编译MySQL。然而,二进制代码将只能运行在Intel奔腾CPU上。 对于一种特定的平台,使用MySQL参考手册上推荐的优化选项。用你将使用的字符集编译MySQL。 静态编译生成mysqld的执行文件(用--with-mysqld-ldflags=all-static)并用strip sql/mysqld整理最终的执行文件。 注意,既然MySQL不使用C++扩展,不带扩展支持编译MySQL将赢得巨大的性能提高。

2、优化表

MySQL拥有一套丰富的类型。应该对每一列尝试使用最有效的类型。ANALYSE过程可以帮助你找到表的最优类型:SELECT * FROM table_name PROCEDURE ANALYSE()。对于不保存NULL值的列使用NOT NULL,这对你想索引的列尤其重要。 将ISAM类型的表改为MyISAM。用固定的表格式创建表。

3、正确使用索引

索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。

假设我们创建了一个名为people的表:

  1. CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL );

然后,我们完全随机把1000个不同name值插入到people表。

但是索引也是有缺点的,首先,索引要占用磁盘空间。通常情况下,这个问题不是很突出。但是,如果你创建每一种可能列组合的索引,索引文件体积的增长速度将远远超过数据文件。如果你有一个很大的表,索引文件的大小可能达到操作系统允许的最大文件限制。如果MySQL能估计出它将可能比扫描整张表还要快时,则不使用索引。另外,对于需要写入数据的操作,比如DELETE、UPDATE操作,索引会降低它们的速度。这是因为MySQL不仅要把改动数据写入数据文件,而且它还要把这些改动写入索引文件。

4、 减少使用字符集编译MySQL

MySQL目前提供多达24种不同的字符集(许多语言版本),为全球用户以他们自己的语言插入或查看表中的数据。缺省情况下,MySQL安装所有者这些字符集,所以最好的选择是安装一两种你需要的就可以了(中文、英文)。

总结:本文介绍了如何在现有硬件条件下提高系统性能,网络管理员充分了解自己的计算机和网络,从而找到真正的瓶颈所在。在预算短缺的今天,理解如何优化系统性能比以往任何时候都重要。一味地硬件投资并不是能够让人们接受的办法,而且还也不一定生效。

以上就是LAMP服务器性能优化技巧,文章到此结束。您的LAMP服务器优化好没呢?

(0)

相关推荐

  • 有关mysql优化的一些东东整理

    1.查询帮助 ? contents2.使用合成的散列值,分离BLOB或者TEXT3.货币使用定点数(decimal或者numberic)4.sql_mode?5.order by rand() limit 1000;6.优化show status like 'Com' Com_select Com_insert等查看插入多还是查询多7.Handler_read_key 的值将很高,这个值代表了一个行被索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用.Handler_r

  • 101个MySQL优化技巧和提示

    MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思路是通用的.我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧. MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中--在内存中访问文件时的速度要比在硬盘中访问时快的多. 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读

  • MySQL优化配置文件my.ini(discuz论坛)

    在Apache, PHP, MySQL的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分.对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接影响到论坛的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的观察统计并且根据经验进行判断,然后设置合理的参数. 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化. 一.服务

  • MySQL优化全攻略-相关数据库命令

    接下来我们要讨论的是数据库性能优化的另一方面,即运用数据库服务器内建的工具辅助性能分析和优化.    ▲ SHOW    执行下面这个命令可以了解服务器的运行状态:   mysql >show status;   该命令将显示出一长列状态变量及其对应的值,其中包括:被中止访问的用户数量,被中止的连接数量,尝试连接的次数,并发连接数量最大值,以及其他许多有用的信息.这些信息对于确定系统问题和效率低下的原因是十分有用的.    SHOW命令除了能够显示出MySQL服务器整体状态信息之外,它还能够显示

  • mysql优化配置参数

    第一种 复制代码 代码如下: #This File was made using the WinMySQLAdmin 1.4 Tool #2004-2-23 16:28:14 #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual for instructions [mysqld] basedir=D:/mysql #bind-address=210.5.*.* datadir=D:/mysq

  • MySQL优化必须调整的10项配置

    当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议.许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项.这篇文章的目的在于给你一份非常重要的配置项清单. 我们曾在几年前在博客里给出了这样的建议,但是MySQL的世界变化实在太快了!写在开始前-即使是经验老道的人也会犯错,会引起很多麻烦.所以在盲目的运用这些推荐之前,请记住下面的内容: 一次只改变一个设置!这是测试改变是否有益的唯一方法. 大多数配置能在运行时使用SET

  • MySQL性能优化 出题业务SQL优化

    先简单介绍一下项目背景.这是一个在线考试练习平台,数据库使用MySQL,表结构如图所示: Question是存储题目的表,数据量在3万左右.AnswerResult表是存储用户作答结果的表,分表之后单表记录大概在300万-400万. 需求:根据用户的作答结果出练习卷,题目的优先级为:未做过的题目>只做错的题目>做错又做对的题目>只做对的题目. 在"做错又做对的题目"中,会按错误次数和正确次数的比例进行权重计算,比如:A.做错10次,做对100次:B.做错10次,做对2

  • 跟着hsp一步步学mysql优化的方法

    在第二集中 1.show status like 'Com%' 等价于show status session like 'Com%'百年--显示当前控制台情况 show global status like 'Com%'--显示数据库从启动到查询次数 show session status like 'Com_select'; show status like 'uptime' -- 已启动多久show status like 'Connections' --连接的次数 slow_queries

  • 非常不错的MySQL优化的8条经验

    1.选取最适用的字段属性   MySQL 可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小.例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用 VARCHAR这种类型也是多余的,因为CHAR(6) 就可以很好的完成任务了.同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGINT来定义整型字段. 另外一个提高

  • mysql数据库sql优化原则(经验总结)

    一.前提 这里的原则只是针对MySQL数据库,其他的数据库某些是殊途同归,某些还是存在差异.我总结的也是MySQL普遍的规则,对于某些特殊情况得特殊对待.在构造SQL语句的时候要养成良好的习惯. 二.原则总结 原则1.仅列出需要查询的字段,这对速度不会明显的影响,主要是考虑节省应用程序服务器的内存. 原来语句: select * from admin 优化为: select admin_id,admin_name,admin_password from admin 原则2.尽量避免在列上做运算,

  • mysql优化取随机数据慢的方法

    前天因为工作需要我把从一个5W记录的数据库中随机抽取几条记录了,这里我是直接使用mysql rand by函数来直接,几千条记录没关系,但如果到了几万条感觉要几秒,这个就很慢了,下面小编与大家一起来看看mysql 取随机数据慢优化过程.MySQL很多时候需要获取随机数据,举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是: 复制代码 代码如下: SELECT * FROM tablename ORDER BY RAND() LIMIT 1 但是,后来我查了一下MYSQL的官

随机推荐