ITPub博客

首页 > Linux操作系统 > Linux操作系统 > mysql表空间

mysql表空间

原创 Linux操作系统 作者:adrain_001 时间:2012-03-25 23:27:11 0 删除 编辑

新加表空间的配置文件主要是这个参数:
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 的以后能为我们带来这样的功能。

标签:MySQL

按默认排序 | 显示最新评论 | 回页面顶部共有4个评论 发表评论»

  • 张宋付
    张宋付 回答于 2010-08-14 19:33 (1年前)

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

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

  • omtf1
    omtf1 回答于 2010-09-08 18:17 (1年前)

    没有啥不足的,是你不知道而已
    innodb_file_per_table  请打开这个参数
  • omtf1
    omtf1 回答于 2010-09-08 18:18 (1年前)

    引用来自“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文件照旧依然被创建。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26690043/viewspace-719510/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 事务管理
请登录后发表评论 登录
全部评论

注册时间:2012-02-13

  • 博文量
    113
  • 访问量
    259719