您的位置:首页 > 其它

InnoDB中文参考手册---14InnoDB表的限制

2008-04-30 07:23 302 查看
InnoDB中文参考手册---犬犬(心帆)翻译
14InnoDB表的限制
在<3.23.50版本的InnoDB中,不可以使用ALTERTABLE或CREATEINDEX来修改一个已经有了外键约束或参考了外键约束的表。使用DROPTABLE和CREATETABLE来代替它。
不可以将系统表(如'user'或'host')转换成InnoDB类型。系统表必须总是为MyISAM类型的。
InnoDB表不支持全文搜索(fulltextsearch)。
MySQL以自动提交模式(autocommitmode)执行复制(replication)。因此slave中的consistentreads可能看起来你部分处理过的事务,所以在slave中这种读取(read)并不是真正的consistent。这个限制在3.23.52不再存在。
InnoDB在内部不保存一个表记录总数,这是由于multiversioning的原因使它实现有点复杂。为了响应一个查询SELECTCOUNT(*)FROMT,InnoDB不得不扫描表的一个索引,如果表没有完全在缓冲池中这将花费一些时间。
为了得到更快的计数你不得不使用自己创建一个计数表,让你的应用程序在插入与删除时自己更新它。消除因锁等待引起的瓶颈的一个方法就是创建整体的计数器集。应用程序可以随机地每次选择一个。
为了得到计数,仅仅只要对计数器求和:SELECTSUM(counter_column)FROMyour_counter_table。表中有auto-increment列的必须为它定义一个键,这个键必须仅仅包含这个auto-increment列。InnoDB不支持在一个CREATETABLE语句中使用AUTO_INCREMENT=...。这个子句是为了给一个auto-increment列设置第一个值(默认的第一个值为1)。工作区(Workaround):向自增列中插入一个指定的值做为第一个值。从此,InnoDB将从这值开始增加。SHOWTABLESTATUS不能给出InnoDB表的精密统计数据,除了由表保留的物理大小之外。记录行数只能通过一个优化的SQL来获得大致的估计。
在MySQL中复制(replication)中,loadtablefrommaster仍然不能在InnoDB表中工作。
在主(master)服务器中开设一个工作区(workaround)用于将表转换成MyISAM型,然后再进行load,之后再在master中将表改回InnoDB类型。
如果以一个列的前面部分建立索引:
CREATETABLET(ACHAR(20),BINT,INDEXT_IND(A(5)))TYPE=InnoDB;
InnoDB将内在的在整个列上建立一个索引,而不是仅以设定的首部分。
InnoDB表不支持INSERTDELAYED。MySQL的LOCKTABLES操作无法知道一个SQL语句已完成对InnoDB的行锁定:这就意味着即使已有其它用户的事务在同一张表上设置了行锁,你仍然会锁定该表。所以你在这张表上的操作与其它用户的锁定冲突则不得不等待。同样死锁也是可能的。无论如何,这能事务完整性(transactionintegrity)并不危险,因为InnoDB设置的行级锁定通常会照顾完整性(integrity)的。同样,一个表级锁定可以防止其它事务在表上获得更多的行级锁定(锁定模式不一致)。
在BLOB或TEXT字段上无法设置索引。一张表不可以有超过1000个字段。
DELETEFROMTABLE除了删除所有记录行之外不再重建表,一个接一个地删除,这并不那么快。在将来的MySQL版本中可以使用TRUNCATE,这是相当快的。
在<=3.23.43的InnoDB中,在对InnoDB表调用DROPDATABASE之前,必须调用DROPTABLE来移除(drop)个体的InnoDB表。这个限制在>=3.23.44的版本中不再存在。
InnoDB默认的页面大小为16kB。通过重新编译源代码可以设置为8kB到64kB。你必须在univ.i中更新UNIV_PAGE_SIZE和UNIV_PAGE_SIZE_SHIFT。在版本<=3.23.39a的InnoDB中,最大记录行长度为比数据库页面长度的一半稍小点。从源释放版本3.23.39b(但是在MySQL-Max3.23.40二进制释放版本中仍然没有)开始,BLOB和TEXT字段允许<4GB,整个行长度同样<4GB。InnoDB不在分开的页面中存储尺寸<=128bytes的字段。在InnoDB通过将长字段存储在分开的页面上修改记录后,剩余的记录行长度必须小于数据库页面的一半。最大键长为500bytes。日志文件的总尺寸必须<4GB。1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: