全部博文(2065)
分类: 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禁用这一功能