Linux环境MySQL服务器级优化讲解(2)

作者:佚名 来源:Linux社区 时间:2008-12-04 17:21:00 

服务器参数的选择

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

delayed_queue_size

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

key_buffer_size

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

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

back_log

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

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

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

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

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

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

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

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

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

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

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

·在一个Sun SPARCstation 10上,gcc2.7.3是比Sun Pro C++ 4.2快13%。

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

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

总结

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

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

思考题

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

2、现在让你需要优化表pet,可以用那些手段做到?

标签:
0
投稿

猜你喜欢

  • python opencv通过4坐标剪裁图片

    2022-06-03 20:14:03
  • 一文详解Go中方法接收器的选择

    2024-05-28 15:36:32
  • MySQL 5.7.18 免安装版配置教程

    2024-01-16 06:12:51
  • 原生Javascript封装的一个AJAX函数分享

    2024-04-30 10:15:25
  • Python Pillow.Image 图像保存和参数选择方式

    2023-03-03 03:36:54
  • python 基于opencv实现图像增强

    2023-03-20 21:04:32
  • python 简易计算器程序,代码就几行

    2021-05-23 22:28:32
  • 使用postman操作ElasticSearch的方法

    2023-04-22 20:58:14
  • 一些常用的Python爬虫技巧汇总

    2021-01-02 22:51:56
  • php session 检测和注销

    2023-11-17 22:45:02
  • python实现自动解数独小程序

    2023-03-28 12:15:19
  • Django表单外键选项初始化的问题及解决方法

    2022-07-09 04:28:42
  • python环形单链表的约瑟夫问题详解

    2023-03-02 04:13:10
  • mysql中的utf8与utf8mb4存储及区别

    2024-01-16 15:48:09
  • 7个好用的TypeScript新功能

    2024-04-23 09:04:00
  • 浅谈numpy数组中冒号和负号的含义

    2023-09-02 01:03:04
  • JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】

    2024-04-25 13:14:08
  • JS重载实现方法分析

    2023-10-07 08:09:04
  • PHP的mysqli_set_charset()函数讲解

    2023-07-11 06:22:17
  • 随机6+1选号码摇奖程序

    2008-07-18 13:15:00
  • asp之家 网络编程 m.aspxhome.com