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

 更新时间:2012年02月20日 10:07:48   作者:  
目前LAMP (Linux + Apache + MySQL + PHP) 近几年来发展迅速,已经成为Web 服务器的事实标准。本文我们将介绍基于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服务器优化好没呢?

相关文章

  • linux启动和重启nginx方法

    linux启动和重启nginx方法

    在本篇文章里小编给大家整理了关于linux如何启动nginx并重启哦的小技巧,有需要的朋友们参考下。
    2019-06-06
  • linux Bash脚本判别使用者的身份方法示例

    linux Bash脚本判别使用者的身份方法示例

    这篇文章主要介绍了linux Bash脚本判别使用者的身份方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Apache shiro的简单介绍与使用教程(与spring整合使用)

    Apache shiro的简单介绍与使用教程(与spring整合使用)

    Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密这篇文章给大家介绍了Apache shiro的简单介绍与使用教程(与spring整合使用),感兴趣的朋友一起看看吧
    2017-10-10
  • Apache 解决80端口占用问题

    Apache 解决80端口占用问题

    今天小编发现一个很棘手的问题,在安装mongodb后发现apache无法启动问题,今天小编给大家带来了Apache 解决80端口占用问题 ,感兴趣的朋友一起看看吧
    2018-03-03
  • Linux环境下nodejs的安装图文教程

    Linux环境下nodejs的安装图文教程

    这篇文章主要介绍了Linux环境下nodejs的安装图文教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • 浅谈ubuntu 使用securecrt vi编辑出现的问题

    浅谈ubuntu 使用securecrt vi编辑出现的问题

    下面小编就为大家带来一篇浅谈ubuntu 使用securecrt vi编辑出现的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Centos7下PHP安装gd库的实例讲解

    Centos7下PHP安装gd库的实例讲解

    下面小编就为大家分享一篇Centos7下PHP安装gd库的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • linux memcache安装配置方法

    linux memcache安装配置方法

    这篇文章主要介绍了linux memcache安装配置方法,需要的朋友可以参考下
    2014-07-07
  • 详解Linux运维CentOS系统SVN双备份Shell脚本

    详解Linux运维CentOS系统SVN双备份Shell脚本

    本篇文章主要介绍了详解Linux运维CentOS系统SVN双备份Shell脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • linux实现对上传文件的定时备份、增量备份的方法

    linux实现对上传文件的定时备份、增量备份的方法

    这篇文章主要介绍了linux实现对上传文件的定时备份、增量备份的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论