分享
 
 
 

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

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

InnoDB 中文参考手册 --- 犬犬(心帆)翻译

code {color:purple} tt {color:green} samp {color:navy} pre {color:maroon}

14 InnoDB 表的限制

在 < 3.23.50 版本的 InnoDB

中,不可以使用 ALTER TABLE 或 CREATE INDEX 来修改一个已经有了外键约束或参考了外键约束的表。使用

DROP TABLE 和 CREATE TABLE 来代替它。

不可以将 MySQL 系统表(如 'user'

或 'host' )转换成 InnoDB 类型。系统表必须总是为 MyISAM 类型的。

InnoDB 表不支持全文搜索(fulltext

search)。

MySQL 以自动提交模式(autocommit

mode)执行复制(replication)。因此slave中的 consistent reads 可能看起来你部分处理过的事务,所以在 slave

中这种读取(read)并不是真正的 consistent 。这个限制在 3.23.52 不再存在。

InnoDB 在内部不保存一个表记录总数,这是由于

multiversioning 的原因使它实现有点复杂。为了响应一个查询

SELECT COUNT(*) FROM T ,InnoDB 不得不扫描表的一个索引,如果表没有完全在缓冲池中这将花费一些时间。

为了得到更快的计数你不得不使用自己创建一个计数表,让你的应用程序在插入与删除时自己更新它。 消除因锁等待引起的瓶颈的一个方法就是创建整体的计数器集。应用程序可以随机地每次选择一个。

为了得到计数,仅仅只要对计数器求和:SELECT SUM(counter_column) FROM your_counter_table。

表中有 auto-increment 列的必须为它定义一个键,这个键必须仅仅包含这个

auto-increment 列。InnoDB 不支持在一个 CREATE TABLE 语句中使用 AUTO_INCREMENT=...

。这个子句是为了给一个 auto-increment 列设置第一个值(默认的第一个值为 1)。工作区(Workaround):向自增列中插入一个指定的值做为第一个值。从此,InnoDB

将从这值开始增加。

SHOW TABLE STATUS

不能给出 InnoDB 表的精密统计数据,除了由表保留的物理大小之外。记录行数只能通过一个优化的 SQL 来获得大致的估计。

在 MySQL 中复制(replication)中,load

table from master 仍然不能在 InnoDB 表中工作。 在主(master)服务器中开设一个工作区(workaround

)用于将表转换成 MyISAM 型,然后再进行 load,之后再在 master 中将表改回 InnoDB 类型。

如果以一个列的前面部分建立索引:

CREATE TABLE T (A CHAR(20), B INT, INDEX T_IND (A(5))) TYPE = InnoDB;

InnoDB 将内在的在整个列上建立一个索引,而不是仅以设定的首部分。

InnoDB 表不支持 INSERT

DELAYED 。

MySQL 的 LOCK TABLES

操作无法知道一个 SQL 语句已完成对 InnoDB 的行锁定:这就意味着即使已有其它用户的事务在同一张表上设置了行锁,你仍然会锁定该表。 所以你在这张表上的操作与其它用户的锁定冲突则不得不等待。同样死锁也是可能的。无论如何,

这能事务完整性(transaction integrity)并不危险,因为 InnoDB 设置的行级锁定通常会照顾完整性(integrity)的。同样,一个表级锁定可以防止其它事务在表上获得更多的行级锁定(锁定模式不一致)。

在 BLOB 或

TEXT 字段上无法设置索引。

一张表不可以有超过 1000 个字段。

DELETE FROM TABLE

除了删除所有记录行之外不再重建表,一个接一个地删除,这并不那么快。在将来的 MySQL 版本中可以使用 TRUNCATE

,这是相当快的。

在 <= 3.23.43 的 InnoDB

中,在对 InnoDB 表调用 DROP DATABASE 之前,必须调用 DROP TABLE

来移除(drop) 个体的 InnoDB 表。这个限制在 >= 3.23.44 的版本中不再存在。

InnoDB 默认的数据库页面大小为 16

kB。通过重新编译源代码可以设置为 8 kB 到 64 kB。你必须在 univ.i 中更新 UNIV_PAGE_SIZE

和 UNIV_PAGE_SIZE_SHIFT 。在版本 <= 3.23.39a 的 InnoDB中,最大记录行长度为比数据库页面长度的一半稍小点。从源释放版本

3.23.39b (但是在 MySQL

-Max 3.23.40 二进制释放版本中仍然没有)开始, BLOB 和 TEXT 字段允许 < 4 GB,整个行长度同样 < 4 GB。InnoDB

不在分开的页面中存储尺寸 <= 128 bytes 的字段。在 InnoDB 通过将长字段存储在分开的页面上修改记录后,剩余的记录行长度必须小于数据库页面的一半。最大键长为

500 bytes。

日志文件的总尺寸必须 < 4 GB。

最大表空间尺寸为数据库页面的 4 十亿(billion)倍。这同样也是一个表的最大尺寸。最小表空间为

10 MB。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有