Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26267471
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Mysql/postgreSQL

2010-02-03 13:16:38

不管数据库采用何种Cache机制,数据库最终总要将数据存储到可以长久保存的磁盘上,磁盘的存取速度远比CPU速 率慢很多,对于大型的数据库,磁盘I/O总会成为数据库的一个性能瓶颈。我们采取的查询优化、数据库优化、数据库服务优化等,都是想通过减少或减缓磁盘读 写来减轻磁盘I/O的压力及其对性能的影响。解决磁盘I/O问题,减少或延缓磁盘操作肯定是一个重要的方面,但是磁盘I/O是不可避免的,因此,增强磁盘 I/O本身的性能和吞吐量也是一个重要方面。

常用的三种处理技术:磁盘阵列、符号链接、裸设备

二、使用Symbolic Links 分布I/O

    MySQL中数据库名和表名是和文件系统中的目录名和文件名对应的,默认情况下MySQL所有的数据库和表都存储在默认的datadir目录下,所有的表 都存储在一个磁盘上,不能发挥出磁盘并行读写的优势。可以利用OS的符号连接将不同的数据库或表、索引指向不同的物理磁盘,从而达到分布磁盘I/O的目 的。

    查看当前文件目录:

Linux系统下使用符号连接:

    (1)、将一个数据库指向其他物理磁盘

          其方法是先在目标磁盘上创建目录,然后再创建从MySQL数据目录到目标目录的符号连接:

        shell > mkdir /otherdisk/wuruling

        shell > ln -s /otherdisk/wuruling   /datadir

        OK了,在数据库wuruling中创建的表都将会被保存到 /otherdisk/wuruling目录中

      (2)、将MyISAM表的数据文件或索引文件指向其他物理磁盘。[其他存储引擎不支持]

              A、对于新建的表,可以通过在create table语句中增加data directory 和index directory选项来完成

create table tt(t int) data directory = '/path.....'    index directory = '/path.....'

             B、对于已有的表,可以先将起数据文件(.MYD)或索引文件(.MYI)转移到目标磁盘,然后再建立符号连接即可。需要说明的是表定义文件(.frm)必须位于MySQL数据文件目录下,不能用符号连接。

Windows 下使用符号连接

      在Windows下,是通过在MySQL数据目录下创建包含目标路径并以".sym"结尾的文本文件来实现的

         A、创建目录 D:\wuruling

        B、创建文件 ...datadir\wuruling.sym   ,在其中输入 D:\wuruling

      这样在数据库wuruling创建的表都会存储到D:\wuruling 目录下

注意:使用Symbolic Links 存在一定的安全风险,如果不使用Symbolic Links,应通过启动参数 skip-symbolic-links禁用这一功能      

阅读(745) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~