MySQL可以通过配置限制表空间的大小吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL可以通过配置限制表空间的大小吗?相关的知识,希望对你有一定的参考价值。

innodb的可以用以下方式设置
[mysqld]
innodb_data_file_path = ts #用来容纳InnoDB数据表的表空间:可能涉及一个以上的文件;每一个表空间文件的最大长度都必须以B,MB,GB为单位给出;表空间文件的名字必须以分号隔开;最后一个表空间文件还以带有一个autoextend属性和一个最大长度(max:n)。如:ibdata1:1G;ibdata2:1G:autoextend:max:2G。默认设置是ibdata1:10M:autoextend
innodb_autoextend_increment = n #带有autoextend属性的表空间文件每次加大多少兆字节(默认是8MB),该属性不涉及具体的数据表文件,那些文件的增大速度相对是比较小的

示例:
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

myisam:
与系统有关
参考技术A

mysql的表空间没有限制,只有你硬盘足够大

为了提高性能,可以每个表设置独立表空间

my.ini 里添加

#使用独立表空间
innodb_file_per_table = 1

参考技术B 这是什么奇葩需求 参考技术C 设定 主键的字段长度不就行了,超出限制就不会再生成新数据 参考技术D 用触发器?一个想法,不一定对,明天试着验证下

myisam和innodb区别

MYISAM和innoDB对比
  innoDB MYISAM
数据存储方式 innoDB的数据存在表空间中,表空间是由innoDB管理的一个黑盒子,由一系列的数据文件组成,所以其大小限制不再是文件大小的限制。4.1以后的版本,innoDB可以将每个表的数据和所有单独放在单独的文件里,所有其大小限制变成文件系统的大小限制。决定存储方式的配置为innodb_file_per_table,若为1则开启独占表空间。

 

MYISAM将数据保存在以.MYD的文件中,将索引保存在.MYI文件中。其表大小受限文件系统的大小。
 事务处理  innoDB支持事务和外键等高级数据库功能  不支持事务

 select、update、

insert、

delete操作

 如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表

DELETE   FROM table时,InnoDB不会重新建立表,而是一行一行的删除,如果要清空保存有大量数据的表,最好使用truncate table这个命令。

LOAD   TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用

  如果执行大量的select操作MYISAM是更好的选择
表的具体行数  InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行
select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含   where条件时,两种表的操作是一样的
 锁  InnoDB表的行锁也不是绝对的,假如在执行一个SQL语句时mysql不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”  表锁
 AUTO_INCREMENT  InnoDB中必须包含该字段的索引,若该字段仅建立一个联合索引时,必须作为联合索引的一个值  在MYISAM只要求包含该字段索引

以上是关于MySQL可以通过配置限制表空间的大小吗?的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL 表大小限制

怎么修改mysql数据库临时表空间大小

mysql 数据库可以有多大

oracle修改表空间大小resize

共享表空间与独立表空间frm,MYD,MYI.idb,par文件说明

linux怎么修改mysql数据库临时表空间大小