MySQL服务器磁盘是如何分割和优化的

63次阅读
没有评论

共计 2707 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要介绍“MySQL 服务器磁盘是如何分割和优化的”,在日常操作中,相信很多人在 MySQL 服务器磁盘是如何分割和优化的问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL 服务器磁盘是如何分割和优化的”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

1、使用符号连接

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

2、分割

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

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

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

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

硬件问题

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

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

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

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

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

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

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

MySQL 服务器磁盘怎么分割和优化

服务器参数的选择

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

delayed_queue_size

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

key_buffer_size

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

在 MySQL3.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 或 CygnusCodeFusion 编译器得到最大速度。我们已经测试了新的 Fujitsu 编译器,但是它是还没足够不出错来优化编译 MySQL。

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

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

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

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

·在一个 SunSPARCstation10 上,gcc2.7.3 是比 SunProC++4.2 快 13%。

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

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

到此,关于“MySQL 服务器磁盘是如何分割和优化的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计2707字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)