MySQL 表空间的不足

鉴客 发布于 2010/06/06 08:42
阅读 7K+
收藏 9

新加表空间的配置文件主要是这个参数:
innodb_data_file_path = ibdata1:370M;ibdata2:50M;ibdata3:50M;ibdata4:500M;ibdata5:500M:autoextend

有几种情况
1 在线上环境时,我的表空间之前没有计划,在使用一段时间后,想新增,这时要先得到此时ibdata1的大小,我的方法是 在配置中随便配个大小,如371M, 这时启动mysql ,会报错起不来,查看错误日志,里面会有pages的大小,通过这个pages的大小计算此时的ibdata1大小

ibdata = pages * page_size/1024
page_size=16k(mysql默认的,可以再编译时更改,下一步将测试这个值对性能的影响)
(正常的得到表空间大小的方法没找到;使用du -h 的值偏大,减1,2M,可以试一下)

2 在使用mysql之前计划好表空间的使用方式和大小,如
innodb_data_file_path = ibdata1:10G;ibdata2:10G;ibdata3:10G;ibdata4:10G;ibdata5:10G:autoextend
这种方式比较理想

表空间的使用
如果采用第2中方式建立表空间的话,在启动初始化后,会建立这5个表空间,只是先把磁盘空间占上而已,如果使用的话,还是按顺序使用的,第一个满了用第二个。

不足:

表空间顾名思义就是存储表数据的空间,而 MySQL 的管理方式则是:按顺序使用,第一个满了用第二个。这在很大方面上限制了灵活性,例如我们希望将某些大表、不经常存取的单独放在某个表空间中,就不被允许。而这在其他商业数据库上都是很基本的功能。

我们只能寄希望于 MySQL 的以后能为我们带来这样的功能。

加载中
1
o
omtf1

引用来自“omtf1”的帖子

没有啥不足的,是你不知道而已
innodb_file_per_table  请打开这个参数

http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#multiple-tablespaces

15.2.6.6. 使用Per-Table表空间

你可以存储每个InnoDB表和它的索引在它自己的文件在中,这个特征被称为“多表空间” ,因为实际上每个表有它自己的表空间。

对那些想把特定表格移到分离物理磁盘的用户,或者那些希望快速恢复单个表的备份而无须打断其余InnoDB表的使用的用户,使用多表空间会是有益的。

你可以往my.cnf的[mysqld]节添加下面行来允许多表空间:

[mysqld]
innodb_file_per_table

重启服务器之后,InnoDB存储每个新创建的表到表格所属于的数据库目录下它自己的文件tbl_name.ibd里。这类似于MyISAM存储引擎所做的,但MyISAM 把表分成数据文件tbl_name.MYD和索引文件tbl_name.MYI。对于InnoDB,数据和所以被一起存到.ibd文件。tbl_name.frm文件照旧依然被创建。

0
张宋付
张宋付

其实每个文件太大也不好的。

一般在200-500左右是最好了。我自己一个小经验呀

0
o
omtf1

没有啥不足的,是你不知道而已
innodb_file_per_table  请打开这个参数
0
V
V

学习了

0
邹双平
innodb_data_file_path = ibdata1:10G;ibdata2:10G;ibdata3:10G;ibdata4:10G;ibdata5:10G:autoextend
返回顶部
顶部