Percona TokuDB

Percona TokuDB

Percona TokuDB.
1

1.    
TokuDB说明…
1

2.    
TokuDB安装…
1

3.    
使用TokuDB.
1

3.1 神速插入和富索引…
1

3.2 聚集secondary索引…
1

3.3 在眉目引成立…
1

3.4 在线增多,删除,扩充,重命名列…
1

3.5           
压缩细节…
1

3.6 修改表的压缩…
1

3.7 无io读复制…
1

3.8 事务和ACID包容苏醒…
1

3.9 管理Log大小…
1

3.10 恢复…
1

3.11 关闭写缓存…
1

3.12 进程追踪…
1

3.13 迁移到TokuDB.
1

4 TokuDB后台
ANALYZE TABLE.
1

4.1 后台作业…
1

4.2 自动深入分析…
1

4.3 系统变量…
1

4.4 information_schema相关表…
1

5 TokuDB变量…
1

6 TokuDB Troubleshooting.
1

6.1 得知难题…
1

6.2 TukoDB锁…
1

6.2.1 TOKUDB_TRX表…
1

6.2.2 TOKUDB_LOCKS表…
1

6.2.3 TOKUDB_LOCK_WAITS表…
1

6.3 引擎状态…
1

6.4 全局状态变量…
1

7 Percona TokuBackup..
1

7.1 从binary安装…
1

7.2 备份…
1

7.3 还原…
1

7.4 推荐配置…
1

7.4.1 监察和控制进程…
1

7.4.2 排除源文件…
1

7.4.3 备份率阀值…
1

7.4.4 限制备份目的…
1

7.4.5 错误报告…
1

7.4.6 限制和已知的主题材料…
1

8 FAQ..
1

 

Percona TokuDB,perconatokudb

1.  TokuDB说明

具体看:

Percona TokuDB

Percona TokuDB. 1

1.     TokuDB说明… 1

2.     TokuDB安装… 1

3.     使用TokuDB.
1

3.1 火速插入和富索引… 1

3.2 聚集secondary索引…
1

3.3 在眉目引创造…
1

3.4 在线加多,删除,扩充,重命名列… 1

3.5            压缩细节… 1

3.6 修改表的压缩…
1

3.7 无io读复制… 1

3.8 事务和ACID包容恢复生机… 1

3.9 管理Log大小… 1

3.10 恢复…
1

3.11 关闭写缓存…
1

3.12 进程追踪…
1

3.13 迁移到TokuDB.
1

4 TokuDB后台
ANALYZE TABLE. 1

4.1 后台作业…
1

4.2 自动分析…
1

4.3 系统变量…
1

4.4 information_schema相关表… 1

5 TokuDB变量…
1

6 TokuDB Troubleshooting. 1

6.1 得知难题…
1

6.2 TukoDB锁…
1

6.2.1 TOKUDB_TRX表… 1

6.2.2 TOKUDB_LOCKS表… 1

6.2.3 TOKUDB_LOCK_WAITS表… 1

6.3 引擎状态…
1

6.4 全局状态变量…
1

7 Percona TokuBackup.. 1

7.1 从binary安装… 1

7.2 备份…
1

7.3 还原…
1

7.4 推荐配置…
1

7.4.1 监察和控制进程…
1

7.4.2 排除源文件…
1

7.4.3 备份率阀值…
1

7.4.4 限制备份目的… 1

7.4.5 错误报告…
1

7.4.6 限制和已知的难题… 1

8 FAQ.. 1

 

2.  TokuDB安装

Percona Server宽容独立可用的TokuDB存款和储蓄引擎包。TokuDB引擎必得分别下载然后以插件的样式启用。这一个包能够单独设置,没有须要任何特定的本子的Percona
Server。

TokuDB存款和储蓄引擎是可扩张,ACID,MVCC的积存引擎,提供依靠索引查询,提供online的框架修改和减少slave延迟。那么些蕴藏引擎设计员为了写入品质,是依靠fractal
tree的。

警告:

      
近来percona提供的TokuDB被采取在Percona
Server 5.7。TokuDB引擎从其余地点下载的不可能被包容。TokuDB文件格式和MySQL变种不是一致的。从三个变种到别的一个或然必要做多少导入导出。

 

嵌入要求

Libjemalloc库

ToKuDB需求libjemalloc 3.3.0依旧更加高版本。能够从percona恐怕其余地点下载。纵然libjemalloc,在此以前未曾设置,TokuDB存款和储蓄引擎在接纳apt,yum安装的时候自动安装,可是并不会被加载到mysql,能够行使如下配置导入。

[mysqld_safe]

malloc-lib=
/path/to/jemalloc

大页面转化

TokuDB假设在大页面转化运行的时候不会被运营。大页面转化是新基础版本的效能。能够通过以下语句检查时候运行。

$ cat
/sys/kernel/mm/transparent_hugepage/enabled

 [always]
madvise never

只要开发银行了大页面转化,运行TokuDB引擎会受到错误日志里面有如下新闻:

Transparent
huge pages are enabled, according to
/sys/kernel/mm/redhat_transparent_hugepage/enabled

Transparent
huge pages are enabled, according to
/sys/kernel/mm/transparent_hugepage/enabled

你也能够关闭大页面转化意义,把transparent_hugepage=never传递到内核bottloader工具。不过要重启。也得以运用以下命令关闭:

echo
never > /sys/kernel/mm/transparent_hugepage/enabled

echo
never > /sys/kernel/mm/transparent_hugepage/defrag

 

安装

近年来TukoDB能够采纳Percona的源安装:

如果为yum:

[root@centos
~]# yum install Percona-Server-tokudb-57.x86_64

如果为apt:

root@wheezy:~# apt-get install percona-server-tokudb-5.7

 

起步TokuDB存款和储蓄引擎

一经设置好TokuDB就能有如下输出:

* This release of Percona Server is distributed with TokuDB storage engine.

   * Run the following script to enable the TokuDB storage engine in Percona Server:

 

    ps_tokudb_admin --enable -u <mysql_admin_user> -p[mysql_admin_pass] [-S <socket>] [-h <host> -P <port>]

 

   * See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_installation.html for more installation details

 

   * See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_intro.html for an introduction to TokuDB

Percona Server实现了ps_tokudb_admin脚本运维TokuDB存款和储蓄引擎。脚本会自动关闭大页面转化。要求sudo 运营一下语句:

ps_tokudb_admin --enable -uroot -pPassw0rd

运行后会输出:

Checking if Percona server is running with jemalloc enabled...

>> Percona server is running with jemalloc enabled.

 

Checking transparent huge pages status on the system...

>> Transparent huge pages are currently disabled on the system.

 

Checking if thp-setting=never option is already set in config file...

>> Option thp-setting=never is not set in the config file.

>> (needed only if THP is not disabled permanently on the system)

 

Checking TokuDB plugin status...

>> TokuDB plugin is not installed.

 

Adding thp-setting=never option into /etc/mysql/my.cnf

>> Successfuly added thp-setting=never option into /etc/mysql/my.cnf

 

Installing TokuDB engine...

>> Successfuly installed TokuDB plugin.

假定脚本未有回来错误,那么TokuDB被成功安装,能够动用show engins检查:

mysql> SHOW ENGINES;

...

 | TokuDB | YES | Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |

...

 

手动运行TokuDB存款和储蓄引擎

万一您不想用ps_tokudb_admin脚本,就供给手动安装存款和储蓄引擎,加载plugins:

INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_background_job_status SONAME 'ha_tokudb.so';

接下来拿走当前积累引擎列表:

mysql> SHOW ENGINES;

...

| TokuDB | YES | Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |

...

接下来show plugins检查是或不是安装准确:

mysql> SHOW PLUGINS;

...

| TokuDB                        | ACTIVE   | STORAGE ENGINE     | ha_tokudb.so | GPL     |

| TokuDB_file_map               | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_fractal_tree_info      | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_fractal_tree_block_map | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_trx                    | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_locks                  | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_lock_waits             | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_background_job_status  | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

...

 

TokuDB版本

查看TokuDB版本:

mysql> SELECT @@tokudb_version;

+------------------+

| @@tokudb_version |

+------------------+

| 5.7.10-1rc1      |

+------------------+

1 row in set (0.00 sec)

1.  TokuDB说明

具体看:

3.  使用TokuDB

2.  TokuDB安装

Percona Server包容独立可用的TokuDB存款和储蓄引擎包。TokuDB引擎必得分开下载然后以插件的格局启用。这一个包能够独自设置,无需别的特定的版本的Percona
Server。

TokuDB存款和储蓄引擎是可扩大,ACID,MVCC的存放引擎,提供依靠索引查询,提供online的框架修改和削减slave延迟。那些蕴藏引擎设计员为了写入品质,是遵照fractal
tree的。

警告:

*       如今percona提供的TokuDB被选拔在Percona Server
5.7。TokuDB引擎从另外省方下载的无法被包容。TokuDB文件格式和MySQL变种不是平等的。从二个变种到别的三个恐怕供给做多少导入导出。*

 

停放要求

Libjemalloc库

ToKuDB供给libjemalloc 3.3.0也许更加高版本。能够从percona也许其余地点下载。假使libjemalloc,在此以前未曾设置,TokuDB存款和储蓄引擎在应用apt,yum安装的时候自动安装,可是并不会被加载到mysql,可以选择如下配置导入。

[mysqld_safe]

malloc-lib= /path/to/jemalloc

大页面转化

TokuDB如果在大页面转化运行的时候不会被运转。大页面转化是新基础版本的功效。能够由此以下语句检查时候运维。

$ cat /sys/kernel/mm/transparent_hugepage/enabled

 [always] madvise never

一旦开发银行了大页面转化,运转TokuDB引擎会受到错误日志里面有如下音讯:

Transparent huge pages are enabled, according to
/sys/kernel/mm/redhat_transparent_hugepage/enabled

Transparent huge pages are enabled, according to
/sys/kernel/mm/transparent_hugepage/enabled

你也得以关闭大页面转化意义,把transparent_hugepage=never传递到内核bottloader工具。不过要重启。也足以动用以下命令关闭:

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag

 

安装

明天TukoDB能够应用Percona的源安装:

如果为yum:

[[email protected]
~]# yum install Percona-Server-tokudb-57.x86_64

如果为apt:

[email protected]:~# apt-get install percona-server-tokudb-5.7

 

运转TokuDB存储引擎

举例设置好TokuDB就能够有如下输出:

* This release of Percona Server is distributed with TokuDB storage engine.

   * Run the following script to enable the TokuDB storage engine in Percona Server:

 

    ps_tokudb_admin --enable -u <mysql_admin_user> -p[mysql_admin_pass] [-S <socket>] [-h <host> -P <port>]

 

   * See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_installation.html for more installation details

 

   * See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_intro.html for an introduction to TokuDB

Percona Server实现了ps_tokudb_admin脚本运行TokuDB存款和储蓄引擎。脚本会自动关闭大页面转化。须求sudo 运维一下语句:

ps_tokudb_admin --enable -uroot -pPassw0rd

运营后会输出:

Checking if Percona server is running with jemalloc enabled...

>> Percona server is running with jemalloc enabled.

 

Checking transparent huge pages status on the system...

>> Transparent huge pages are currently disabled on the system.

 

Checking if thp-setting=never option is already set in config file...

>> Option thp-setting=never is not set in the config file.

>> (needed only if THP is not disabled permanently on the system)

 

Checking TokuDB plugin status...

>> TokuDB plugin is not installed.

 

Adding thp-setting=never option into /etc/mysql/my.cnf

>> Successfuly added thp-setting=never option into /etc/mysql/my.cnf

 

Installing TokuDB engine...

>> Successfuly installed TokuDB plugin.

设若脚本未有回到错误,那么TokuDB被成功安装,能够使用show engins检查:

mysql> SHOW ENGINES;

...

 | TokuDB | YES | Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |

...

 

手动运行TokuDB存款和储蓄引擎

即便你不想用ps_tokudb_admin脚本,就需求手动安装存款和储蓄引擎,加载plugins:

INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_background_job_status SONAME 'ha_tokudb.so';

然后拿走当前囤积引擎列表:

mysql> SHOW ENGINES;

...

| TokuDB | YES | Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |

...

接下来show plugins检查是还是不是安装正确:

mysql> SHOW PLUGINS;

...

| TokuDB                        | ACTIVE   | STORAGE ENGINE     | ha_tokudb.so | GPL     |

| TokuDB_file_map               | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_fractal_tree_info      | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_fractal_tree_block_map | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_trx                    | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_locks                  | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_lock_waits             | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_background_job_status  | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

...

 

TokuDB版本

查看TokuDB版本:

mysql> SELECT @@tokudb_version;

+------------------+

| @@tokudb_version |

+------------------+

| 5.7.10-1rc1      |

+------------------+

1 row in set (0.00 sec)

3.1 火速插入和富索引

TokuDB使用富索引,让更快的目录,能够让查询更加快。譬喻覆盖恐怕集中索引。

 

3.  使用TokuDB

3.2 聚集secondary索引

TokuDB允许二个secondary索引定义为集中索引。以为那全体的表上的列都在那么些secondary索引上。Percona Server剖析况且询问优化的时候支持多聚集键,当TokuDB被选取的时候。也便是说在特定情状下,查询优化器会防止主键集中索引读取,而是选用secondary
集中索引读取。

今日深入分析式支持一下语法:

CREATE TABLE ... ( ..., CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., UNIQUE CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., CLUSTERING UNIQUE KEY identifier (column list), ...

CREATE TABLE ... ( ..., CONSTRAINT identifier UNIQUE CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., CONSTRAINT identifier CLUSTERING UNIQUE KEY identifier (column list), ...

 

CREATE TABLE ... (... column type CLUSTERING [UNIQUE] [KEY], ...)

CREATE TABLE ... (... column type [UNIQUE] CLUSTERING [KEY], ...)

 

ALTER TABLE ..., ADD CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD UNIQUE CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD CLUSTERING UNIQUE INDEX identifier (column list), ...

ALTER TABLE ..., ADD CONSTRAINT identifier UNIQUE CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD CONSTRAINT identifier CLUSTERING UNIQUE INDEX identifier (column list), ...

 

CREATE CLUSTERING INDEX identifier ON ...

定义secondary集中索引:

CREATE TABLE table (

  column_a INT,

  column_b INT,

  column_c INT,

  PRIMARY KEY index_a (column_a),

  CLUSTERING KEY index_b (column_b)) ENGINE = TokuDB;

TokuDB能够选拔集中索引是因为它精美的缩减和异常高的索引率。

 

3.1 快速插入和富索引

TokuDB使用富索引,让越来越快的目录,能够让查询更加快。比如覆盖也许聚焦索引。

 

3.3 在眉目引成立

TokuDB能够让您在线的加多索引到已经存在的表中。不是接纳online
关键字,照旧使用tokudb_create_index_online的对话系统变量:

mysql> SET tokudb_create_index_online=on;

Query OK, 0 rows affected (0.00 sec)

 

mysql> CREATE INDEX index ON table (field_name);

也得以行使,alter table命令离线情势的创始索引,不管有未有展开tokudb_create_index_online都以离线的。唯有create index情势得以在线的创制。

Online创设索引比offline 的满,和劳动繁忙程度有关。创建索引的精度能够由此命令show
processlist查看。一旦索引创立实现,新的目录在下个查询安插中就能够被使用。

若是在同三个表上有多余一个的创导索引,索引会线性的被成立。索引创立会等待别的一个实现,在show
processlist中会展现被锁定。推荐在创立索引落成今后再来实行下叁个。

 

3.2 聚集secondary索引

TokuDB允许二个secondary索引定义为聚焦索引。感到那全数的表上的列都在这些secondary索引上。Percona Server深入分析况且询问优化的时候援救多聚焦键,当TokuDB被运用的时候。约等于说在一定条件下,查询优化器会制止主键聚集索引读取,而是接纳secondary
集中索引读取。

前日分析式协助一下语法:

CREATE TABLE ... ( ..., CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., UNIQUE CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., CLUSTERING UNIQUE KEY identifier (column list), ...

CREATE TABLE ... ( ..., CONSTRAINT identifier UNIQUE CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., CONSTRAINT identifier CLUSTERING UNIQUE KEY identifier (column list), ...

 

CREATE TABLE ... (... column type CLUSTERING [UNIQUE] [KEY], ...)

CREATE TABLE ... (... column type [UNIQUE] CLUSTERING [KEY], ...)

 

ALTER TABLE ..., ADD CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD UNIQUE CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD CLUSTERING UNIQUE INDEX identifier (column list), ...

ALTER TABLE ..., ADD CONSTRAINT identifier UNIQUE CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD CONSTRAINT identifier CLUSTERING UNIQUE INDEX identifier (column list), ...

 

CREATE CLUSTERING INDEX identifier ON ...

定义secondary聚焦索引:

CREATE TABLE table (

  column_a INT,

  column_b INT,

  column_c INT,

  PRIMARY KEY index_a (column_a),

  CLUSTERING KEY index_b (column_b)) ENGINE = TokuDB;

TokuDB能够利用聚焦索引是因为它能够的压缩和异常高的索引率。

 

3.4 在线增添,删除,扩大,重命名列

TokuDB可以让您增多和删除已经存在表的列,扩张char,varchar,varbinary,integer类型,也许重命名已经存在的列。HCADE奥迪Q3会短暂的锁定表,修改数据字段。然后当数码从磁盘读入的时候都会被涂改。对于列重命名,全体的劳作在几分钟内成功,在磁盘上的多少不会被修改。

获取HCADER的好质量,的几点:

Ÿ   加多,删除可能扩张操作的存在延续会被感到是fractal
tree的一有个别。
能够动用optimize table x来叁遍性处理,optimize table并不会重新建立索引,但是会诱发HCADE路虎极光的周转。

Ÿ   每种HCADE奥迪Q3必须独立的周转。借使想要增加和删除改四个列,那么就写多少个语句。

Ÿ   制止HCADE昂科雷和在头脑引操作一齐管理。

Ÿ   表锁的风浪有所不一致,HCADE福特Explorer的锁定事件是脏数据刷新的平地风波,因为mysql会在alter table之后关闭。借使近年来发生过检查点,那么操作就能极快。假若有太多的脏数据,那么刷新事件或然会不长。

Ÿ   幸免删除的列是索引的一有些。假使列是索引的一有个别,那么删除会非常慢。

Ÿ   在线增加只扶助char,varchar,varbinary和integer。假设字段是主键恐怕其余secondary索引的一有的也不援救。

Ÿ   重命名只可以是一句三个列。

只顾有所的列属性必需制订,alter table
change也许会相当的慢:

Ÿ   在线列重命名不扶助以下字段,time,enum,blob,tinyblob,mediumblob,longblob。那个列的重命名会走正规的流程。

Ÿ   临时表不可能利用HCADE凯雷德。

 

3.3 在眉目引创立

TokuDB可以令你在线的增加索引到已经存在的表中。不是应用online
关键字,依然选拔tokudb_create_index_online的对话系统变量:

mysql> SET tokudb_create_index_online=on;

Query OK, 0 rows affected (0.00 sec)

 

mysql> CREATE INDEX index ON table (field_name);

也得以利用,alter table命令离线情势的创始索引,不管有未有展开tokudb_create_index_online都是离线的。独有create index情势得以在线的创设。

Online创制索引比offline 的满,和服务繁忙程度有关。创设索引的精度能够通过命令show
processlist查看。一旦索引创立完毕,新的目录在下个查询安排中就能够被运用。

假使在同三个表上有多余三个的创导索引,索引会线性的被创设。索引创设会等待别的贰个实现,在show
processlist中会显示被锁定。推荐在创制索引实现之后再来推行下四个。

 

3.5    压缩细节

TokuDB提供区别级其他裁减,是cpu和压缩率之间的片段平衡。规范的缩减使用一点点的cpu可是压缩等级也很低,高端别的压缩比较消耗cpu。

TokuDB压缩发生在后台线程,表示高压缩率并不会延迟数据库。事实上,在某个有些情形下,压缩率越高品质越好。

注意:

       日常在6核一下的推荐规范的减少,6核以上的引荐高压缩

压缩率的挑三拣四照旧决意于数据库的时候,推荐使用私下认可配置。

减去在create table,alter table的凭仗每张表设置行格式:

CREATE
TABLE table (

 
column_a INT NOT NULL PRIMARY KEY,

 
column_b INT NOT NULL) ENGINE=TokuDB

 
ROW_FORMAT=row_format;

 

假如在create table 的时候未有安装行格式,那么是怎么削减看tokudb_row_format的装置。若无设置tokudb_row_format,那么压缩就动用zlib。

Row_format和tokudb_row_format取值如下:

·        
TOKUDB_DEFUALT:以私下认可格局减弱。在TokuDB 7.1,私下认可的施用zlib实行削减,之后大概会改。

·        
TOKUDB_FAST:那个设置使用quicklz压缩。

·        
TOKUDB_SMALL:使用lzma实行压缩。

别的也得以间接采取压缩库,可用的压缩库:

·        
TOKUDB_ZLIB:接纳zlib实行削减,提供中等的缩减和cpu使用率

·        
TOKUDB_QUICKLZ:利用quicklz进行压缩,提供轻量级的滑坡和低cpu使用率。

·        
TOKUDB_LZMA:行使lzma举行削减,提供最高的压缩和cpu使用率。

·        
TOKUDB_SNAPPY:使用snappy实行压缩,合理的飞快的回退。

·        
TOKUDB_UNCOMPRESSED:本条设置关闭了滑坡,並且表不会被压缩。

3.4 在线增多,删除,扩展,重命名列

TokuDB能够令你增添和删除已经存在表的列,增添char,varchar,varbinary,integer类型,或然重命名已经存在的列。HCADE君越会短暂的锁定表,修改数据字段。然后当数码从磁盘读入的时候都会被退换。对于列重命名,全体的行事在几分钟内成功,在磁盘上的数额不会被修改。

得到HCADE陆风X8的好质量,的几点:

Ÿ   增多,删除恐怕扩大操作的承接会被感到是fractal
tree的一片段。
能够运用optimize table x来三次性处理,optimize table并不会重新建立索引,不过会诱发HCADE库罗德的运维。

Ÿ   每一种HCADE奥迪Q5必需独立的运营。即使想要增加和删除改三个列,那么就写多个语句。

Ÿ   防止HCADE途睿欧和在线索引操作一同处理。

Ÿ   表锁的风浪有所分化,HCADEEnclave的锁定事件是脏数据刷新的平地风波,因为mysql会在alter table之后关闭。假设近些日子发生过检查点,那么操作就能够比极快。假如有太多的脏数据,那么刷新事件只怕会十分短。

Ÿ   幸免删除的列是索引的一片段。假若列是索引的一部分,那么删除会异常慢。

Ÿ   在线扩张只支持char,varchar,varbinary和integer。要是字段是主键或许另外secondary索引的一部分也不扶助。

Ÿ   重命名只可以是一句一个列。

瞩目有所的列属性必得拟订,alter table
change或许会相当的慢:

Ÿ   在线列重命名不扶助以下字段,time,enum,blob,tinyblob,mediumblob,longblob。这个列的重命名会走正规的流程。

Ÿ   有的时候表无法使用HCADE奥迪Q7。

 

3.6 修改表的滑坡

修改表的回退语法如下:

ALTER
TABLE table

 
ROW_FORMAT=row_format;

注意:

       修改表偶的削减至会影响性写入的数量。修改表压缩之后能够透过OPTIMZE
TABLE把全体的block整体写三次。

3.5    压缩细节

TokuDB提供区别级其余滑坡,是cpu和压缩率之间的一部分平衡。标准的收缩使用一些些的cpu不过压缩品级也十分低,高档其他缩减比较消耗cpu。

TokuDB压缩爆发在后台线程,表示高压缩率并不会推迟数据库。事实上,在少数有个别情状下,压缩率越高品质越好。

注意:

       平日在6核一下的推荐规范的回退,6核以上的引荐高压缩

压缩率的选料依旧在于数据库的时候,推荐应用私下认可配置。

减掉在create table,alter table的根据每张表设置行格式:

CREATE TABLE table (

  column_a INT NOT NULL PRIMARY KEY,

  column_b INT NOT NULL) ENGINE=TokuDB

  ROW_FORMAT=row_format;

 

要是在create table 的时候从不设置行格式,那么是怎么减弱看tokudb_row_format的安装。若无安装tokudb_row_format,那么压缩就选择zlib。

Row_format和tokudb_row_format取值如下:

·         TOKUDB_DEFUALT:以暗中同意方式减弱。在TokuDB 7.1,暗中认可的行使zlib举办压缩,之后只怕会改。

·         TOKUDB_FAST:这些设置使用quicklz压缩。

·         TOKUDB_SMALL:使用lzma进行削减。

其余也能够直接选拔压缩库,可用的压缩库:

·         TOKUDB_ZLIB:使用zlib进行削减,提供中等的缩减和cpu使用率

·         TOKUDB_QUICKLZ:选拔quicklz实行压缩,提供轻量级的滑坡和低cpu使用率。

·         TOKUDB_LZMA:选取lzma实行削减,提供最高的缩减和cpu使用率。

·         TOKUDB_SNAPPY:利用snappy举办压缩,合理的高速的回退。

·         TOKUDB_UNCOMPRESSED:其一设置关闭了削减,並且表不会被压缩。

3.7 无io读复制

TokuDB slave能够安排,让来自master修改能够最小化。通过记录fractal tree索引:

·        
Insert/update/delete操作能够决定打消read-modify-write的一坐一起,然后注入音信到符合的fractal tree。

·        
Update/delete操作可以配备取消须要io的一致性检查。

为了选取应用无io读复制,服务要求配置:

·         在replication master:

o    设置为binlog行模式:BINLOG_FORMAT=ROW

·         在replication slave:

o    Slave必需为只读:read_only=1

o    撤消一致性检查:tokudb_rpl_unique_checks=0

o    关闭查找(read-modify-write) :tokudb_rpl_lookup_rows=0

能够在多少个依然三个slave上配备。只要master使用了基于行的复制,优化在tokudb slave就可用。也正是说固然master使用innodb或然myisam表也是可用的。

3.6 修改表的削减

修改表的回退语法如下:

ALTER TABLE table

  ROW_FORMAT=row_format;

注意:

       修改表偶的削减至会影响性写入的多少。修改表压缩之后能够通过OPTIMZE
TABLE把持有的block全体写三回。

3.8 事务和ACID包容复苏

默许,Tokudb检查有着检查点之间的开拓的表和日志的修改,所以在系统崩溃的,Tokudb会苏醒全部的表大ACID包容状态。全体的交由业务都会被反馈在表上,况且未有交到的业务都会被回滚。

默许检查点60秒实行三回,假如检查点必要更加多的实施,那么下叁个检查点会登时实施。那么些和日志文件截断的功用有关。客商能够使用flush
logs命令推行检查点。当数据库关闭会实施检查点况兼撤废全体的感叹事务。日志在重启的时候被截断。

3.7 无io读复制

TokuDB slave能够配备,让来自master修改能够最小化。通过记录fractal tree索引:

·         Insert/update/delete操作能够垄断撤消read-modify-write的一坐一起,然后注入音讯到适当的fractal tree。

·         Update/delete操作能够布署撤除需求io的一致性检查。

为了利用使用无io读复制,服务须求配备:

·         在replication master:

o    设置为binlog行模式:BINLOG_FORMAT=ROW

·         在replication slave:

o    Slave必得为只读:read_only=1

o    撤消一致性检查:tokudb_rpl_unique_checks=0

o    关闭查找(read-modify-write) :tokudb_rpl_lookup_rows=0

能够在一个要么多少个slave上配备。只要master使用了依据行的复制,优化在tokudb slave就可用。约等于说假如master使用innodb可能myisam表也是可用的。

3.9 管理Log大小

TokuDB有限协理日志文件能够会到最后三回检查点。当日志文件达到100MB,就能够运转四个新的公文。不管是不是有检查点,全部的日志文件比checkpoint老的都会被甩掉。假如检查点时间被设置了比非常的大的值,log的截断频率会巨惠扣。暗中同意那些值为60s。

TokuDB为种种张开的业务保存了回滚日志,各类log的文件大小和业务的天职和被缩减保存到磁盘的尺寸有关。回滚日志在连带事情完毕后会被截断。

 

3.8 事务和ACID宽容复苏

暗许,Tokudb检查有着检查点之间的开荒的表和日志的修改,所以在系统崩溃的,Tokudb会复苏全数的表大ACID宽容状态。全体的付出业务都会被影响在表上,何况未有交给的业务都会被回滚。

私下认可检查点60秒施行一回,借使检查点供给更加的多的施行,那么下贰个检查点会立即试行。这么些和日志文件截断的功能有关。客户能够行使flush
logs命令实施检查点。当数据库关闭会试行检查点何况撤消全体的感叹事务。日志在重启的时候被截断。

3.10 恢复

光复是活动的,TokuDB使用日志文件,和回滚日志来回复。苏醒的日子和和日志文件的大大小小和未压缩回滚日志大小有关。由此只要未有长日子运作的工作,那么恢复生机进程是全速的。

 

3.9 管理Log大小

TokuDB保障日志文件可以会到终极贰次检查点。当日志文件达到100MB,就能运转叁个新的文书。不管是还是不是有检查点,全数的日志文件比checkpoint老的都会被吐弃。要是检查点时间棉被服装置了相当大的值,log的截断频率会回退。暗中同意这几个值为60s。

TokuDB为每一种展开的事情保存了回滚日志,种种log的文件大小和业务的职分和被削减保存到磁盘的轻重有关。回滚日志在相关事情落成后会被截断。

 

3.11 关闭写缓存

而是用任何事情安全的数据库,都就算在你打探硬件的写缓存的根基上。TokuDB提供业务安全的寄放引擎。借使写入磁盘的编慕与著述,操作系统或许硬件未有当真的写入到磁盘,那么crash之后会破坏。

本条时候必要关闭写缓存,在ATA/SATA上应用以下命令:

$
hdparm -W0 /dev/hda

在好几情形下得以选取写缓存:

·         写缓存能够在xfs上,何况保证电瓶专门的学业寻常的情事下利用。假诺在/var/log
/messages上出现以下信息就不可能动用写缓存:

o    Disabling
barriers, not supported with external log device

o    Disabling
barriers, not supported by the underlying device

o    Disabling
barriers, trial barrier write failed

以下情况就必需关闭写缓存:

·         假诺你选择了ext3文件系统

·         就算运用了LVM

·         要是您利用了软的RAID

·         假诺采取了RAID有battery-backed-up memory

 

3.10 恢复

还原是机动的,TokuDB使用日志文件,和回滚日志来复苏。复苏的时光和和日志文件的轻重和未压缩回滚日志大小有关。因而一旦未有长日子运作的思想政治工作,那么復苏进度是快捷的。

 

3.12 进程追踪

TokuDB有贰个系统来追踪长运转语句:

·         Bluk
Load:当使用load data infile导入大批量数额,使用show processlist命令可以查阅到速度分为2部分,已不是唤醒为:Inserted about 1000000 rows。别的一些是比例,指示为Loading of data about
61% done。

·         扩展索引,当使用alter table可能create index命令创设索引,show processlist展现速度,会唤醒已经管理的行数。通过这一个苗条来证实进程。和bulk
load类似,第一阶段展现行管理速度,第二品级显示百分比。

·         提交和收回,当提交可能吊销多个作业,使用show
processlist,会评估专门的学业操作管理。

 

3.11 关闭写缓存

然则用任何专门的职业安全的数据库,都要是在您询问硬件的写缓存的底蕴上。TokuDB提供业务安全的储存引擎。假设写入磁盘的创作,操作系统恐怕硬件未有当真的写入到磁盘,那么crash之后会破坏。

以此时候需求关闭写缓存,在ATA/SATA上接纳以下命令:

$ hdparm -W0 /dev/hda

在一些境况下能够利用写缓存:

·         写缓存可以在xfs上,並且有限扶助电瓶专门的学问例行的情况下选取。假若在/var/log
/messages上边世以下消息就不能够应用写缓存:

o    Disabling barriers, not supported with external log device

o    Disabling barriers, not supported by the underlying device

o    Disabling barriers, trial barrier write failed

以下情状就不能不关闭写缓存:

·         假诺你使用了ext3文件系统

·         若是选取了LVM

·         假使您利用了软的RAID

·         假诺运用了RAID有battery-backed-up memory

 

3.13 迁移到TokuDB

为了吧表转化到TokuDB引擎,能够利用alter table engine来修改,要是你想要从文件中程导弹入数据,那么使用load
data infile,不要使用mysqldump,因为有一点点慢。

 

3.12 进度追踪

TokuDB有多个系统来追踪长运转语句:

·         Bluk Load:当使用load data
infile导入大量数码,使用show processlist命令能够查阅到速度分为2部分,已不是进行试探为:Inserted about 一千000 rows。其它一些是比例,提醒为Loading of data about
52% done。

·         扩充索引,当使用alter table恐怕create index命令创立索引,show processlist呈现速度,会提醒已经管理的行数。通过这些苗条来注解进程。和bulk
load类似,第一等级展现行处理速度,第二等级展现百分比。

·         提交和打消,当提交恐怕吊销三个作业,使用show
processlist,会评估业务操作管理。

 

4 TokuDB后台 ANALYZE TABLE

TokuDB有贰个后台线程依照修改的评估来机关分析表。

3.13 迁移到TokuDB

为了吧表转化到TokuDB引擎,能够接纳alter table engine来修改,如若您想要从文件中程导弹入数据,那么使用load
data infile,不要选用mysqldump,因为有个别慢。

 

4.1 后台作业

后台作业调解是一时半刻的,假若在关服务的时候有后台作业运转,那么会被结束。当服务重启已经运转的都会被忽略,须求再行来,借使手动调用ANALYZE
TABLE和后台作业争论,那么后台作业会被吊销,能够因而表TOKUDB_BACKGROUND_JOB_STATUS查看后台作业是不是运转。

新的tokudb_analyze_in_background变量能够用来贯彻调控时候ANALYZE TABLE是后台运维依然在前台。tokudb_analyze_mode用来调节ANALYZE TABLE的行为。

tokudb_analyze_mode变量用来贯彻对ANALYZE
TABLE的调控:

TOKUDB_ANALYZE_CANCEL:裁撤在一定表上任何运转的只怕应调用的功课。

TOKUDB_ANALYZE_STANDAENVISIOND:使用已经存在深入分析算法。

TOKUDB_ANALYZE_RECOUNT_ROWS:重新总结表上的逻辑行並且更新当前的计数。

 

TOKUDB_ANALYZE_RECOUNT_ROWS 是新的编写制定,用来进行逻辑重算全数表中的行并且保存,作为表的评评估价值。那些形式扩展是为着从老版本进级的TokuDB难题,老的TokuDB只协理物理行计数,并且没有一个不错的逻辑行计数。新创造的表也许分区最初以逻辑行,而且没有需求被重复计算除非一些境界条件变成逻辑计数变得不标准。这么些分析情势不会潜濡默化基数计数。会基于tokudb_analyze_in_background和tokudb_analyze_throttle。job运转后在装置变量不会听得多了就能说的清楚当下job的周转。

 

打消任何后台线程,能够安装tokudb_analyze_mode=TOKUDBANALYZE_CANCEL何况在表上运转ANALYZE TABLE。

4 TokuDB后台 ANALYZE TABLE

TokuDB有三个后台线程依照修改的评估来机关深入分析表。

4.2 自动解析

为了实现后台的剖判和收罗计数总结每一个表上都维护了五个增量值,这么些值并非保留的,当服务重启就能够被安装为0.那一个记录了全数的写操作。当以此值超过了tokudb_auto_analyze设置的值,那么依据当前对话的装置会实行贰个分析。别的对于那些表的分区就能截至,除非那个剖判产生。当剖判形成,值棉被服装置为0,重新总结。

 

其余分析到位,状态值都会被反映到劳动。半时反转分析,也被达成,也正是说假使超过八分之四的tokudb_analyze_time时间过去,不过还未有分析到数据量的二分一,那么分析会重启,从最后一条数据最早往上剖析,而且把剖析结构丰裕到前边的结果上。

 

对于小表,自动深入分析只怕每便修改都会执行。出发更是如下若是(table_delta
>= ((table_rows *tokudb_auto_analyze) / 100))那么就初叶运维ANALYZE TABLE。假若顾客手动调用ANALYZE TABLE并且tokudb_auto_analyze被运转了还要未有争辨的后台作业,客商运转的ANALYZE
TABLE会和增量值当先了上线同样,完结后会吧增量设置为0.

4.1 后台作业

后台作业调节是指日可待的,若是在关服务的时候有后台作业运转,那么会被甘休。当服务重启已经运维的都会被忽视,须要重新来,如若手动调用ANALYZE
TABLE和后台作业争辩,那么后台作业会被吊销,能够由此表TOKUDB_BACKGROUND_JOB_STATUS查看后台作业是不是运转。

新的tokudb_analyze_in_background变量能够用来兑现调整时候ANALYZE TABLE是后台运转照旧在前台。tokudb_analyze_mode用来调控ANALYZE TABLE的行事。

tokudb_analyze_mode变量用来兑现对ANALYZE
TABLE的主宰:

TOKUDB_ANALYZE_CANCEL:撤销在一定表上任何运维的要么应调用的功课。

TOKUDB_ANALYZE_STANDAXC90D:使用已经存在剖析算法。

TOKUDB_ANALYZE_RECOUNT_ROWS:重新总括表上的逻辑行况兼更新当前的计数。

 

TOKUDB_ANALYZE_RECOUNT_ROWS 是新的编写制定,用来实践逻辑重算全部表中的行何况保存,作为表的评评估价值。那一个方式扩充是为着从老版本晋级的TokuDB难点,老的TokuDB只支持物理行计数,何况未有三个没有错的逻辑行计数。新创立的表大概分区开始以逻辑行,并且无需被重新计算除非一些边际条件形成逻辑计数变得不确切。这么些剖判格局不会耳闻则诵基数计数。会依赖tokudb_analyze_in_background和tokudb_analyze_throttle。job运维后在设置变量不会潜移暗化当下job的周转。

 

收回任何后台线程,能够安装tokudb_analyze_mode=TOKUDBANALYZE_CANCEL而且在表上运营ANALYZE TABLE。

4.3 系统变量

tokudb_analyze_in_background:假诺设置为on,那么任何analyze table都会在后台运转。

tokudb_analyze_mode:

    

TOKUDB_ANALYZE_CANCEL:撤消在特定表上任何运营的依旧应调用的学业。

TOKUDB_ANALYZE_STANDAXC90D:使用已经存在分析算法。

TOKUDB_ANALYZE_RECOUNT_ROWS:重新总括表上的逻辑行况且更新当前的计数。

tokudb_analyze_throttle:表示当analyze
table的时候最大每秒访谈的key

tokudb_analyze_time:会话变量支配剖析操作费用的风浪。

tokudb_auto_analyze:会话变量支配超过自动深入分析的比率,写入操作到了这么些比率就能够更新。

tokudb_cardinality_scale_percent:弱化大概加重索引大概表的基数性格,比如innodb写死百分之五十,在400行数据,四十多少个独一值,公式如下:(200/40
*tokudb_cardinality_scale) / 100

4.2 自动剖析

为了贯彻后台的剖析和访谈计数总结各种表上都维护了多少个增量值,那一个值并非保留的,当服务重启就能够被安装为0.这几个记录了有着的写操作。当以此值抢先了tokudb_auto_analyze设置的值,那么根据近些日子对话的安装会实行叁个剖判。别的对于这几个表的分区就能够截止,除非那么些剖判产生。当深入分析到位,值棉被服装置为0,重新总结。

 

任何深入分析到位,状态值都会被报告到服务。半时反转深入分析,也被达成,约等于说假诺赶过二分之一的tokudb_analyze_time时间过去,然而还并未有解析到数据量的二分一,那么剖析会重启,从最后一条数据最初往上深入分析,并且把深入分析结构丰富到事先的结果上。

 

对于小表,自动剖析可能每一遍修改都会执行。出发更是如下如若(table_delta
>= ((table_rows *tokudb_auto_analyze) / 100))那么就初始运营ANALYZE TABLE。要是客户手动调用ANALYZE TABLE况兼tokudb_auto_analyze被运行了同时未有冲突的后台作业,顾客运转的ANALYZE
TABLE会和增量值超越了上线同样,实现后会吧增量设置为0.

4.4 information_schema相关表

INFORMATION_SCHEMA.TOKUDB_BACKGROUND_JOB_STATUS

4.3 系统变量

tokudb_analyze_in_background:如若设置为on,那么任何analyze table都会在后台运行。

tokudb_analyze_mode:

    

TOKUDB_ANALYZE_CANCEL:裁撤在一定表上任何运营的只怕应调用的学业。

TOKUDB_ANALYZE_STANDA路虎极光D:使用已经存在深入分析算法。

TOKUDB_ANALYZE_RECOUNT_ROWS:重新计算表上的逻辑行并且更新当前的计数。

tokudb_analyze_throttle:表示当analyze
table的时候最大每秒访谈的key

tokudb_analyze_time:会话变量支配深入分析操作开销的事件。

tokudb_auto_analyze:会话变量支配抢先自动分析的比值,写入操作到了那个比率就能更新。

tokudb_cardinality_scale_percent:弱化也许加重索引或然表的基数性情,譬喻innodb写死十分之五,在400行数据,36个独一值,公式如下:(200/40
*tokudb_cardinality_scale) / 100

发表评论

电子邮件地址不会被公开。 必填项已用*标注