MySQL I/O 问题

 

磁盘搜索是巨大的性能瓶颈。当数据量变得非常大以致于缓存性能变得不可能有效时,该问题变得更加明显。对于大数据库,其中你或多或少地随机访问数据,你可以确信对读取操作需要至少一次硬盘搜索,写操作需要多次硬盘搜索。要想使该问题最小化, 应使用搜索次数较少的磁盘。

 

1 使用磁盘阵列或虚拟文件卷分布I/O

 

磁盘阵列

 

    1. 为了高可靠性你可能想使用RAID 0+1(条纹加镜像) ,但在这种情况下,需要2*N块磁盘来保持N个磁盘的数据。如果你肯为它花钱,这可能是最好的选项。然而,你可能还必须投资一部分资金到卷管理软件中以便有效地管理它。

 

   2. 一个较好的选择是根据数据类型的重要性程度改变RAID级别。 例如, 保存可以在RAID 0硬盘上重新生成的不太重要的数据,但保存 真正重要数据(例如主机信息和日志)到RAID 0+1RAID N硬盘。如果你有许多写操作, RAID N可能会存在问题,因为需要时间来更新校验位。

 

 

2 使用Symbolic Links分布I/O    *可不掌握)

 

可以将表和数据库从数据库目录移动到其它的位置并且用指向新位置的符号链接进行替换。 推荐的方法只需要将数据库通过符号链接指到不同的磁盘。 符号链接表仅作为是最后的办法。

符号链接一个数据库的方法是,首先在一些有空闲空间的硬盘上创建一个目录,然

后从MySQL数据目录中创建它的一个符号链接。

shell> mkdir /dr1/databases/test

shell> ln -s /dr1/databases/test /path/to/datadir

注意:只有MyISAM表完全支持符号链接。对于其它表类型,如果试图在操作系统中

的文件上用前面的任何语句使用符号链接,可能会出现奇怪的问题。

对于MyISAM表的符号链接的处理如下:

1. 在数据目录指,一定会有表定义文件、数据文件和索引文件。数据文件和索引文件可以

移到别处和在数据目录中符号链接替代。表定义文件不能进行符号链接替换。

2. 可以分别通过符号链接将数据文件和索引文件指到不同的目录。

 

 

3. 如果mysqld没有运行,符号链接可以从服务器命令行使用ln -s手动完成。同样,通

过使用DATA DIRECTORYINDEX DIRECTORY选项创建表,你可以指示运行的MySQL

务器执行符号链接。

4. myisamchk不用数据文件或索引文件替换符号链接。它直接工作在符号链接指向的文

件。任何临时文件创建在数据文件或索引文件所处的目录中。

5. 注释:当你删掉一个表时,如果该表使用了符号链接,符号链接和该符号链接指向的文

件都被删除掉。这就是你不应以系统root用户运行mysqld或允许系统用户对MySQL

数据库目录有写访问权限的原因。

6. 如果你用ALTER TABLE ... RENAME重命名一个表并且不将表移到另一个数据库,数据

库目录中的符号链接被重新命名为一个新名字并且数据文件和索引文件也相应地重新

命名。

7. 如果你用ALTER TABLE ... RENAME移动一个表到另一个数据库,表移动到另一个数据

库目录。旧的符号链接和其所指向的文件被删除。换句话说,新表不再被链接。

8. 如果不使用符号链接,你应对mysqld使用--skip-symbolic-links选项以确保没有人

能够使用mysqld来删除或重新命名数据目录之外的文件。

表符号链接还不支持以下操作:

1. ALTER TABLE忽略DATA DIRECTORY INDEX DIRECTORY表选项。

2. BACKUP TABLE RESTORE TABLE不考虑符号链接。

3. .frm文件必须绝不能是一个符号链接(如前面所述,只有数据和索引文件可以是符号

链接) 。如果试图这样做(例如,生成符号链接)会产生不正确的结果。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值