10bet网址
MySQL集群NDB 8.0
相关的文档10bet官方网站 下载这个摘录
PDF (Ltr)- 4.6 mb
PDF (A4)- 4.6 mb


6.11.1 NDB集群磁盘数据对象

NDB集群磁盘数据存储实现使用以下对象:

  • 表空间:充当其他磁盘数据对象的容器。一个表空间包含一个或多个数据文件和一个或多个undo日志文件组。

  • 数据文件:存储列数据。一个数据文件直接被分配到一个表空间。

  • Undo日志文件:包含所需撤销信息回滚事务。分配给一个undo日志文件组。

  • 日志文件组:包含一个或多个undo日志文件。分配给一个表空间。

Undo日志文件和数据文件实际文件在每个数据节点的文件系统;在默认情况下它们放在ndb_node_id_fsDataDir中指定NDB集群config.ini文件,node_id是数据节点的节点ID。可以将这些地方通过指定一个绝对或相对路径作为文件名的一部分创建undo日志或数据文件时。语句创建这些文件在本节所示。

Undo日志文件,仅仅使用了磁盘数据表,和不需要或使用NDB表存储在内存中。

NDB集群表空间,日志文件组不作为文件实现。

虽然并不是所有的磁盘数据对象都实现为文件,他们都共享相同的名称空间中。这意味着每个磁盘数据对象必须惟一命名(而不只是每个磁盘数据给定类型的对象)。例如,你不能有一个表空间和一个日志文件组命名dd1

假设你已经建立了一个NDB集群与所有节点(包括管理和SQL节点),创建一个NDB集群的基本步骤表在磁盘上如下:

  1. 创建一个日志文件组,并分配给它的一个或多个undo日志文件(undo日志文件有时也称为一个undofile)。

  2. 创建一个表空间;指定日志文件组,以及一个或多个数据文件,表空间。

  3. 创建一个使用这个表空间的磁盘数据表的数据存储。

这些任务可以使用SQL语句来完成mysql客户端或其他MySQL客户端应用程序,如后面的例子所示。

  1. 我们创建一个日志文件组命名lg_1使用创建日志文件组。这个日志文件组是由两个undo日志文件,我们的名字undo_1.logundo_2.log的初始尺寸16 MB和12 MB,分别。(undo日志文件的默认的初始大小为128 MB)。或者,您还可以指定日志文件组的撤销缓冲区的大小,或者允许承担8 MB的默认值。在这个例子中,我们设置了撤销缓冲区的大小在2 MB。必须创建一个日志文件组的undo日志文件;所以我们添加undo_1.loglg_1在这个创建日志文件组声明:

    创建日志文件组lg_1添加UNDOFILE undo_1。日志的INITIAL_SIZE 16 m UNDO_BUFFER_SIZE 2 m引擎NDBCLUSTER;

    添加undo_2.log日志文件组,使用以下修改日志文件组声明:

    修改日志文件组lg_1添加UNDOFILE undo_2。日志的INITIAL_SIZE 12米引擎NDBCLUSTER;

    一些物品的注意:

    • . log这里使用文件扩展名不是必需的。我们使用它仅仅使日志文件很容易辨认。

    • 每一个创建日志文件组修改日志文件组语句必须包括一个引擎选择。这个选项是唯一允许值NDBCLUSTERNDB

      重要的

      最多可以存在一个日志文件组在同一NDB集群在任何给定的时间。

    • 当你添加一个undo日志文件写入日志文件组使用添加UNDOFILE”文件名的文件名称文件名创建的ndb_node_id_fs目录内DataDir集群中的每个数据节点的node_id是数据节点的节点ID。每个undo日志文件的大小在SQL语句中指定。例如,如果一个NDB集群有4个数据节点,然后修改日志文件组创建4 undo日志文件,1所示声明只是数据目录中的每个在每个4的数据节点;这些文件被命名为undo_2.log并且每个文件是12 MB。

    • UNDO_BUFFER_SIZE系统可用内存的数量是有限的。

    • 看到创建日志文件组声明,修改日志文件组声明为更多的信息关于这些语句。

  2. 现在我们可以创建一个tablespace-an抽象容器文件磁盘数据表用来存储数据。与一个特定的表空间日志文件组;当创建一个新的表空间时,您必须指定日志文件组用途undo日志记录。您还必须指定至少一个数据文件;您可以添加更多的数据文件后的表空间创建表空间。还可以将数据文件从一个表空间(见例子之后在这一节中)。

    假设我们希望创建一个表空间ts_1它使用lg_1作为其日志文件组。我们希望表空间包含两个数据文件,命名data_1.datdata_2.dat的初始尺寸32 MB和48 MB,分别。(默认值INITIAL_SIZE是128 MB)。我们可以使用两个SQL语句,如下所示:

    创建表空间ts_1添加丢失的data_1。dat的使用日志文件组lg_1 INITIAL_SIZE 32 m引擎NDBCLUSTER;data_2 ts_1改变表空间添加数据文件”。dat的INITIAL_SIZE 48米;

    创建表空间语句创建一个表空间ts_1的数据文件data_1.dat,和同事ts_1与日志文件组lg_1。的修改表空间添加第二个数据文件(data_2.dat)。

    一些物品的注意:

    • 一样的. log这个示例中所使用的文件扩展名undo日志文件,没有特殊意义.dat文件扩展名;它只是用于简单的识别。

    • 当你添加一个数据文件表空间使用添加数据文件”文件名的文件名称文件名创建的ndb_node_id_fs目录内DataDir集群中的每个数据节点的node_id是数据节点的节点ID。每个数据文件的大小在SQL语句中指定。例如,如果一个NDB集群有4个数据节点,然后修改表空间语句创建4所示数据文件,1 4的每个数据目录的每个数据节点;这些文件被命名为data_2.dat和每个文件的大小是48 MB。

    • NDB储量4%的每个表空间使用在数据节点重启。这个空间是不能用于存储数据。

    • 创建表空间声明必须包含一个引擎条款;只有表使用相同的存储引擎的表空间可以创建表空间。为修改表空间,一个引擎条款被接受,但弃用和在将来发布的版本中移除。为NDB表空间,唯一允许的值这个选项NDBCLUSTERNDB

    • NDB 8.0.20,之后,分配之间的区段以循环的方式执行所有数据文件由给定的表空间使用。

    • 更多的信息创建表空间修改表空间语句,看到创建表空间语句,改变表空间声明

  3. 现在可以创建一个表去列取消建立索引的使用文件表空间存储在磁盘上ts_1:

    创建表dt_1 (member_id INT UNSIGNED NOT NULL AUTO_INCREMENT主键、last_name VARCHAR (50) NOT NULL, first_name VARCHAR (50) NOT NULL,捐赠日期不是NULL,加入日期NOT NULL,指数(last_name、first_name))表空间ts_1磁盘存储引擎NDBCLUSTER;

    表空间ts_1存储磁盘讲述了NDB存储引擎使用的表空间ts_1数据存储在磁盘上。

    一次表ts_1创建如图所示,您可以执行吗插入,选择,更新,删除声明它就像任何其他的MySQL表。

    还可以指定一个单独的列是否存储在磁盘或内存中使用存储条款的一部分列的定义创建表ALTER TABLE声明。存储磁盘导致列被存储在磁盘上,存储记忆导致内存存储使用。看到CREATE TABLE语句为更多的信息。

您可以获得的信息NDB磁盘数据文件和undo日志文件创建的查询文件表中INFORMATION_SCHEMA数据库,如下所示:

mysql >选择FILE_NAME作为文件,FILE_TYPE类型,TABLESPACE_NAME表空间,TABLE_NAME名字,LOGFILE_GROUP_NAME的文件组,FREE_EXTENTS免费,TOTAL_EXTENTS INFORMATION_SCHEMA总。文件引擎=“ndbcluster”;+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - | + |文件类型名称| | |表空间文件组总| | |免费+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + |。/ undo_1。日志| UNDO日志| lg_1零| | lg_1 | 0 | 4194304 | |。/ undo_2。日志| UNDO日志| lg_1零| | lg_1 | 0 | 3145728 | |。/ data_1。dat功能| | ts_1零| | lg_1 32 32 | | | |。/ data_2。dat功能| | ts_1零| | lg_1 48 48 | + | | - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + 4行组(0.00秒)

的更多信息和示例,请参阅INFORMATION_SCHEMA文件表

索引列的隐式地存储在磁盘上。对于表dt_1定义所示的例子中,只有强加于人加入列存储在磁盘上。这是因为有上的索引id,last_name,first_name列,所以属于这些列的数据是存储在RAM中。只能在磁盘上举行nonindexed列;索引和索引列数据继续被存储在内存中。这个索引的使用和保护之间的权衡的RAM是你必须牢记设计磁盘数据表。

您不能添加一个索引列被显式声明存储磁盘第一,没有改变其存储类型的作品内存;任何这样做的企图都失败了,一个错误。这一列隐式地使用磁盘存储可以被索引;完成此步骤后,列的存储类型改变内存自动。通过隐式地,我们的意思是一个列的存储类型不是宣布,但哪个是哪个继承自父表。在接下来的CREATE TABLE语句(使用的表空间ts_1前面定义),列c2c3使用磁盘存储隐式:

mysql > CREATE TABLE ti (- > c1 INT主键,- > c2 INT, INT - > c3, - > c4 INT - >) - >存储磁盘- >表空间ts_1 - >引擎NDBCLUSTER;查询好,0行影响(1.31秒)

因为c2,c3,c4自己不宣布存储磁盘,可以指数。在这里,我们添加索引c2c3分别使用创建索引ALTER TABLE:

mysql >上创建索引i1 ti (c2);查询好,0行影响(2.72秒)记录:0副本:0警告:0 mysql > ALTER TABLE ti添加索引i2 (c3);查询好,0行影响(0.92秒)记录:0副本:0警告:0

显示创建表确认添加索引。

mysql >显示创建表ti \ G * * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行* * * * * * * * * * * * * * * * * * * * * * * * * * *表:ti创建表:创建表“透明国际”(c1的int(11)不是NULL, c2的int(11)默认为空,c3的int(11)默认为空,c4的int(11)默认为空,主键(c1),关键的i1 (c2),关键的i2 (c3)) / * !50100表空间的ts_1存储磁盘* /引擎= ndbcluster默认字符集= latin1一行在集合中的一个(0.00秒)

你可以看到使用ndb_desc索引列(强调文本)现在使用的内存而不是磁盘存储:

>。美元/ ndb_desc - d测试t1 - t1 -版本:33554433片段类型:HashMapPartition K值:6分钟负载因素:78年最大负荷系数:80临时表:没有数量的属性:4号主键:1纳数据长度:317 Max行:0行校验和:1行GCI: 1 SingleUserMode: 0 ForceVarPart: 1 PartitionCount: 4 FragmentCount: 4 PartitionBalance: FOR_RP_BY_LDM ExtraRowGciBits: 0 ExtraRowAuthorBits: 0 TableStatus:检索表选项:HashMap:默认HashMap - 3840 4 -属性- c1 Int主键分布键在圣= =固定内存c2 Int NULL =固定圣圣= =内存c3 Int NULL =固定内存c4 Int NULL =固定圣=磁盘索引,主键(c1)——UniqueHashIndex i2 (c3)——OrderedIndex初级(c1) - OrderedIndex i1 (c2) OrderedIndex NDBT_ProgramExit: 0 -好的

性能报告。使用磁盘数据存储集群的性能大大提高,如果磁盘数据文件保存在一个单独的物理磁盘的数据节点上的文件系统。这个必须为每个数据节点集群中获得任何明显的好处。

您可以使用绝对和相对的文件系统路径添加UNDOFILE添加数据文件;相对路径计算的数据节点的数据目录。

日志文件组,一个表空间,以及任何磁盘数据表使用这些必须创建在一个特定的顺序。这也适用于删除这些对象,受到以下限制:

  • 日志文件组不能被删除,只要任何表空间使用它。

  • 一个表空间不能被删除,只要包含任何数据文件。

  • 你不能放弃任何数据文件从一个表空间,只要仍有任何表使用的表空间。

  • 不可能将文件中创建与另一个不同的表空间创建的文件。

例如,删除所有对象创建了到目前为止在本节中,您可以使用以下语句:

mysql > DROP TABLE dt_1;mysql >改变表空间ts_1 - >功能“data_2下降。dat”- >引擎NDBCLUSTER;mysql >改变表空间ts_1 - >功能“data_1下降。dat”- >引擎NDBCLUSTER;mysql >删除表空间ts_1 - >引擎NDBCLUSTER;mysql >删除日志文件组lg_1 - >引擎NDBCLUSTER;

必须执行这些语句的顺序显示,除了这两个改变表空间……删除数据文件语句可以在任何顺序执行。