为
read with read lock
。这是因为
blob
或
text
字段类型的值实际上从另外的表里面读取的
Rollback
:
在
tx
中没有部分
rollback
。
Duplicate key
或者类似的错误将导致整个
tx
回滚
Transactions and memory usage
:
正如这章节其它地方提到的,MySQL Cluster不能很好的处理大事务;最好是把含有大量操作的单个大事务变成含有一些操作的很多小事务来处理。大事务需要非常多的内存资源。因为如此,很多MySQL语句的事务行为受下列所述影响:
Truncate操作在ndb表上执行时是非事务的:如果truncate在清空表时失败,那么需要重复执行多次直到其成功执行
Delete(即使没有where子句)是事务的:对于包含大量记录的表,你也许会发现使用几次delete from … limit …去执行删除操作性能会好一些。如果你的目的是清空表,你应该使用truncate操作
Load data infile操作在ndb表上执行时是非事务的
NOTE:当执行load data infile时候,ndb引擎会不定期的执行提交来保证更好利用通讯网络。不可能提前知道这样的提交在什么时候发生。Load datafrom master在MySQL Cluster中不支持。
Alter table和tx:当拷贝一个ndb表的动作是alter table的一部分时,拷贝的创建是非事务的。(任何情况下,当拷贝被删除时,这个操作会rolled back。)
Error Handling
启动、停止或者重新启动一个节点可能会引发
temporary error
,从而导致某些
tx
失败。这包括下面几种情况:
Temporary errors
:
当第一次启动一个节点时,可能你会看到
Error 1204 Temporaryfailure, distribution changed
或类似的
temporary errors
Errors due to node failure
:
停止或任何
data node
失效能够导致很多不同的节点失败错误。(然而,当执行一个计划中的
cluster
关闭时,这不会引起
tx
失败)
在这些情况下,任何产生的错误必须由应用程序处理。这通常通过重试
tx
完成。
Limits Associated with Database Objects
当使用
ndb
引擎时,一些数据库对象如表和索引会有不同的限制:
Identifiers
:
ndb
引擎中的
database names/table names/attribute names
不能像其它存储引擎一样长。
Attribute names
将被截断至
31
个字符,并且如果被截断后的名字不唯一的话将会报错。
Database names
和
table names
总共最大长度为
122
个字符。换句话说,一个
ndb
表名的最大长度是
122
个字符减去此表所属的
database
名字的字符数
Number of tables
:
ndb
表的最大数量被限制为
20320
Attributes per table
:
每张表的
attributes
(也就是
indexes
和
columns
)的最大数量被限制为
128
Attributes per key
:
每个
key
的
attributes
最大数量是
32
Row size
:
任何一行的最大允许尺寸是
8KB
。
Note that each
BLOB
or
TEXT
columncontributes 256 + 8 = 264 bytes towards this total
Unsupported Or Missing Features
Leave a Comment