• Embed Doc
  • Readcast
  • Collections
  • CommentGo Back
 
Known Limitations of MySQL Cluster
摘自《
MySQL 5.1.22-rc Reference Manual
 Non-Compliance In SQL Syntax
 
 
不支持临时表(
does not support the create option 'TEMPORARY'
 
 
Ndb
index
key
 
不能在
BLOB
TEXT
列上创建
index
 
Ndb
不支持
fulltext
索引:
 
但能够在
varchar
列上创建
index
 
BIT
字段不能是主键、唯一键或索引,也不能是它们的一部分
 
 
ndb
引擎支持
auto_increment
字段:如果没有显式主键,
ndb
自动创建
auto_increment
字段并隐式为主键
 
 
ndb
引擎支持
geometry
数据类型(
WKT
WKB
spatial index
 
ndb
引擎仅支持
[LINEAR] KEY
类型分区支持
ALTER TABLE...ADD PARTITION,REORGANIZE PARTITION, and COALESCE PARTITION
,不支持
ALTERTABLE...DROP PARTITION
 
ndb
中使用行级复制,
binlog
不能禁用。
ndb
引擎忽略
SQL_LOG_BIN
的值
 
Limits and Differences from Standard MySQL Limits
 
 
当删除
ndb
表时,它所消耗的内存不能被自动回收,像其它引擎一样:
delete
操作之后的内存可以为同一张
ndb
表再次
insert
数据时使用而不能为其它
ndb
表使用(在执
rolling restart
之后,这种内存为其它表所用
drop
truncate
操作之后的内存可以为任何
ndb
表使用
 
 
cluster
配置引起的限制:在
cluster
设置限制方面,有很多可配置的硬限制存在,但是多存在于主内存中。大多数配置参数可以在线
upgraded
。这些限制包括:
 
 
database memory size
index memory size
datamemory
32KB
页分配。当一
datamemory
页被使用时,它被分配到一个表;一旦被分配,只有当
drop
这个表后,这块内存页才能被释放;
 
 
一个
tx
所能执行的最大
operation
数量
MaxNoOfConcurrentOperations
MaxNoOfLocalOperations
设置:
bulk loading/truncate table/alter table
动作被当作多个
tx
处理,它们不受制于这个限制
 
 
table
index
有不同的限制:例如,每张表的最大
ordered indexes
数量
MaxNoOfOrderedIndexes
决定
 
 
node
data object
的最大数量。下面的限制应用于
cluster nodes
metadata objects
的数量:
 
 
data node
的最大数量是
48
:一个
data node ID
不能大于
49
 
MySQL Cluster
里面所有
nodes
最大数量是
63
(见本节最后
CGE
版本说明)
sql nodes/API nodes/data nodes
mgmt nodes
 
MySQL Cluster 5.1/CGE5.1
里面,最大
metadata objects
的数量是
20320
这是代码级限制。
 
Limits Relating to Transaction Handling
 
Transaction isolation level
ndb
仅支持
read committed
 
 
注:如果在
ndb
表上的
select
语句包含
blob
text
字段,
read committed
自动转换
 
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 masterMySQL Cluster中不支持。
 
Alter tabletx:当拷贝一个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
 
很多其它存储引擎支持的特性在
ndb
表中不被支持:
 
 
Foreign key constraints
外键被忽略,就像在
MyISAM
表中一样
 
 
Optimize operations
optimize
操作不被支持
 
 
Load table … from master …
这个操作不被支持
 
 
Savepoints and rollbacks
保存点和到保存点的回滚被忽略,就像在
MyISAM
表中一样
 
 
Durability of commits
在磁盘上没有持久的提交。提交是被复制的,但是不能保证在提交的时候日志能够被刷新到磁盘上
 
 
Replication
不支持
statement
级别的复制。当配置
MySQL Cluster
复制时,需要使用
--binlog-format=row
or --binlog-format=mixed
 
Limitations Relating to Performance
下面的性能问题是特殊的,尤其是在
MySQL Cluster
中特别声明的:
 
 
Range scans
由于
ndb
引擎的顺序访问,会导致性能问题;
MyISAM
或者
Innodb
相比,它做很多
range scans
的开销更大
 
 
Reliability of Records in range
Records in range
的统计是可用的,但不是经过完全的测试或官方支持。这在某些情况下可能会导致非最佳的查询计划。如果必要的话,你可以用
USE INDEX
或者
FORCE INDEX
来改变执行计划
 
 
Unique hash indexes
如果唯一性
hash indexes
是用
USING HASH
关键字创建,同时
NULL
key
的一部分,那么在访问表的时候这个
hash indexes
不可用
 
Issues Exclusive to MySQL Cluster
下面的限制只针对
ndbcluster
存储引擎:
 
 
Machine architecture
cluster
里面的所有机器必须是相同的架构。也就是说,所有的节点主机都必须是
big-endian
little-endian
,不能混合。举例来说,你不能用一个运行在
PPC
机器上的管理节点来指挥一个运行在
x86
机器上的数据节点。这个限制不应用于只是简单运行
mysql
或其它可能访问到
SQL nodes
的客户端上
 
 
Adding and dropping of data nodes
当前不支持在线添加或删除数据节点。这种情况下,整个集群必须重启
 
 
Binary logging
 
对于
binary logging
MySQL Cluster
有下面的局限性或限制:
 
 
SQL_LOG_BIN
对于
data operations
没有影响然而它支
schema operations
 
MySQL Cluster
不产生包含
BLOB
字段但没有主键的表的
binlog
 
仅下面的
schema operations
被记入
cluster binlog
binlog
不在
mysqld
上执行
statement
 
 
CREATE TABLE
 
ALTER TABLE
 
DROP TABLE
 
CREATE DATABASE / CREATE SCHEMA
 
DROP DATABASE / DROP SCHEMA
 
CREATE TABLESPACE
 
ALTER TABLESPACE
 
DROP TABLESPACE
 
CREATE LOGFILE GROUP
of 00

Leave a Comment

You must be to leave a comment.
Submit
Characters: ...
You must be to leave a comment.
Submit
Characters: ...