知识大全 Linux环境MySQL服务器级优化讲解

Posted

篇首语:宁给穷人一斗,不给富人一口。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Linux环境MySQL服务器级优化讲解相关的知识,希望对你有一定的参考价值。

Linux环境MySQL服务器级优化讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  摘要 本节简单介绍了如何在服务器级优化数据库的性能 以及提高数据库性能涉及到的硬件问题 选择一个尽量快的系统 使用RAID磁盘阵列是非常容易想到的方法 对于数据库守护程序 既可以在编译时就提供合适的参数 也可以在选项文件中提供需要优化的参数

  前面各段介绍了普通的 MySQL 用户利用表创建和索引操作 以及利用查询的编写能够进行的优化 不过 还有一些只能由 MySQL 管理员和系统管理员来完成的优化 这些管理员在 MySQL 服务器或运行 MySQL 的机器上具有控制权 有的服务器参数直接适用于查询处理 可将它们打开 而有的硬件配置问题直接影响查询处理速度 应该对它们进行调整

  磁盘问题

  正如前面所述 磁盘寻道是一个性能的大瓶颈 当数据开始增长以致缓存变得不可能时 这个问题变得越来越明显 对大数据库 在那你或多或少地要随机存取数据 你可以依靠你将至少需要一次磁盘寻道来读取并且几次磁盘寻道写入 为了使这个问题最小化 使用有低寻道时间的磁盘

  为了增加可用磁盘轴的数量(并且从而减少寻道开销) 符号联接文件到不同磁盘或分割磁盘是可能的

   使用符号连接

  这意味着你将索引/数据文件符号从正常的数据目录链接到其他磁盘(那也可以被分割的) 这使得寻道和读取时间更好(如果磁盘不用于其他事情)

   分割

  分割意味着你有许多磁盘并把第一块放在第一个磁盘上 在第二块放在第二个磁盘上 并且第 n块在第(n mod number_of_disks)磁盘上 等等 这意味着 如果你的正常数据大小于分割大小(或完美地排列过) 你将得到较好一些的性能 注意 分割是否很依赖于OS和分割大小 因此用不同的分割大小测试你的应用程序 见 使用你自己的基准 注意对分割的速度差异很依赖于参数 取决于你如何分割参数和磁盘数量 你可以得出以数量级的不同 注意你必须选择为随机或顺序存取优化

  为了可靠 你可能想要使用袭击RAID + (分割+镜像) 但是在这种情况下 你将需要 *N个驱动器来保存N个驱动器的数据 如果你有钱 这可能是最好的选择!然而你也可能必须投资一些卷管理软件投资以高效地处理它

  一个好选择是让稍重要的数据(它能再生)上存在RAID 磁盘上 而将确实重要的数据(像主机信息和日志文件)存在一个RAID + 或RAID N磁盘上 如果因为更新奇偶位你有许多写入 RAID N可能是一个问题

  你也可以对数据库使用的文件系统设置参数 一个容易的改变是以noatime选项挂装文件系统 这是它跳过更新在inode中的最后访问时间 而且这将避免一些磁盘寻道

  硬件问题

  可利用硬件更有效地改善服务器的性能

   在机器中安装更多的内存 这样能够增加服务器的高速缓存和缓冲区的尺寸 使服务器更经常地使用存放在内存中的信息 降低从磁盘取信息的要求

   如果有足够的 RAM 使所有交换在内存文件系统中完成 那么应该重新配置系统 去掉所有磁盘交换设置 否则 即使有足以满足交换的 RAM 某些系统仍然要与磁盘进行交换

   增加更快的磁盘以减少 I/O 等待时间 寻道时间是这里决定性能的主要因素 逐字地移动磁头是很慢的 一旦磁头定位 从磁道读块则较快

  在不同的物理设备上设法重新分配磁盘活动 如果可能 应将您的两个最繁忙的数据库存放在不同的物理设备上 请注意 使用同一物理设备上的不同分区是不够的 这样没有帮助 因为它们仍将争用相同的物理资源(磁盘头) 移动数据库的过程在第 章中介绍

   在将数据重新放到不同设备之前 应该保证了解该系统的装载特性 如果在特定的物理设备上已经有了某些特定的主要活动 将数据库放到该处实际上可能会使性能更坏 例如 不要把数据库移到处理大量Web 通信的Web 服务器设备上

   在设置 MySQL 时 应该配置其使用静态库而不是共享库 使用共享库的动态二进制系统可节省磁盘空间 但静态二进制系统更快(然而 如果希望装入用户自定义的函数 则不能使用静态二进制系统 因为 UDF 机制依赖于动态连接)

  服务器参数的选择

  服务器有几个能够改变从而影响其操作的参数(或称变量) 系统变量的当前值可以通过执行mysqladmin varibles命令来检查 其中几个参数主要与查询有关 有必要在此提一下

  delayed_queue_size

  此参数在执行其他 INSERT DELAYED 语句的客户机阻塞以前 确定来自 INSERT DELAYED 语句的放入队列的行的数目 增加这个参数的值使服务器能从这种请求中接收更多的行 因而客户机可以继续执行而不阻塞

  key_buffer_size

  此参数为用来存放索引块的缓冲区尺寸 如果内存多 增加这个值能节省索引创建和修改的时间 较大的值使 MySQL 能在内存中存储更多的索引块 这样增加了在内存中找到键值而不用读磁盘块的可能性

  在 MySQL 版及以后的版本中 如果增加了键缓冲区的尺寸 可能还希望用 init file 选项启动服务器 这样能够指定一个服务器启动时执行的 SQL 语句文件 如果有想要存放在内存中的只读表 可将它们拷贝到索引查找非常快的 HEAP 表

  back_log

  引入客户机连接请求的数量 这些请求在从当前客户机中处理时排队 如果你有一个很忙的站点 可以增加改变量的值

  编译和链接怎样影响MySQL的速度

  大多数下列测试在Linux上并用MySQL基准进行的 但是它们应该对其他操作系统和工作负载给出一些指示

  当你用 static链接时 你得到最快的可执行文件 使用Unix套接字而非TCP/IP连接一个数据库也可给出好一些的性能

  在Linux上 当用pgcc和 O 编译时 你将得到最快的代码 为了用这些选项编译 你需要大约 M内存 因为gcc/pgcc需要很多内存使所有函数嵌入(inline) 在配置MySQL时 你也应该设定CXX=gcc以避免包括libstdc++库(它不需要)

  只通过使用一个较好的编译器或较好的编译器选项 在应用中你能得到一个 %的加速 如果你自己编译SQL服务器 这特别重要!

  在Intel上 你应该例如使用pgcc或Cygnus CodeFusion编译器得到最大速度 我们已经测试了新的 Fujitsu编译器 但是它是还没足够不出错来优化编译MySQL

  这里是我们做过的一些测量表

  ·如果你以 O 使用pgcc并且编译任何东西 mysqld服务器是比用gcc快 %(用字符串 的版本)

  ·如果你动态地链接(没有 static) 结果慢了 % 注意你仍能使用一个动态连接的MySQL库 只有服务器对性能是关键的

  ·如果你使用TCP/IP而非Unix套接字 结果慢 %

  ·在一个Sun SPARCstation 上 gcc 是比Sun Pro C++ 快 %

  ·在Solaris 上 在单个处理器上MIT pthreads比带原生线程的Solaris慢 % 以更多的负载/cpus 差别应该变得更大

  由TcX提供的MySQL Linux的分发用pgcc编译并静态链接

  总结

  本节简单介绍了如何在服务器级优化数据库的性能 以及提高数据库性能涉及到的硬件问题 选择一个尽量快的系统 使用RAID磁盘阵列是非常容易想到的方法

  对于数据库守护程序 既可以在编译时就提供合适的参数 也可以在选项文件中提供需要优化的参数

  思考题

   使用ANALYSE过程分析语句SELECT * FROM pet 判断是否有必要改变列的类型

cha138/Article/program/MySQL/201311/29375

相关参考

知识大全 详细讲解Linux环境下MySQL 5.1安装步骤[2]

数据库相关:详细讲解Linux环境下MySQL5.1安装步骤[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 在Linux高负载下mysql数据库彻底优化

在Linux高负载下mysql数据库彻底优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  同时

知识大全 实例讲解MYSQL数据库的查询优化技术

实例讲解MYSQL数据库的查询优化技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库系统

知识大全 Linux下解决MySQL服务的两个基本问题

Linux下解决MySQL服务的两个基本问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用

知识大全 linux系统下mysql中文乱码解决

  改默认编码  /etc/initd/mysqlstart(stop)为启动和停止服务器  /etc/mysql/主要配置文件所在位置f  /var/lib/mysql/放置的是数据库表文件夹这里的

知识大全 服务器优化——Sysctl、Apache、MySQL

服务器优化——Sysctl、Apache、MySQL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 linux下mysql远程连接

  对大家推荐很好使用的Linuxmysql系统像让大家对Linuxmysql系统有所了解然后对Linuxmysql系统全面讲解介绍希望对大家有用今天特意配置了mysqlapachephp虽然网上很多

知识大全 在Linux 环境下安装 Mysql

在Linux环境下安装Mysql  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一引言  想使用

知识大全 mysql性能的检查和调优方法[6]

   机器实在负荷不了   如果做了以上调整服务器还是不能承受那就只能通过架构级调整来优化了   mysql同

知识大全 讲解linux环境下Oracle的自动启动与停止

讲解linux环境下Oracle的自动启动与停止  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!