MariaDB 10之TokuDB存储引擎

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

TokuDB存储引擎,你可以把它看做是ARCHIVE存储引擎的升级版,它拥有了密集压缩,并且支持事务。


压缩比:

Engine Compression Table size [MB]
InnoDB  none  2272
InnoDB  KEY_BLOCK_SIZE=8  1144
InnoDB  KEY_BLOCK_SIZE=4  584
MyISAM  none  1810
MyISAM  compressed with myisampack  809
Archive  default  211
TokuDB  ZLIB  284
TokuDB  LZMA  208


特性:

Feature Archive MyISAM (compressed) InnoDB TokuDB
DML only INSERTs no yes yes
Transactions no no yes yes
ACID no no yes yes
Indexes no yes yes yes
Online DDL no no yes * yes **


MariaDB10,已经内嵌了TokuDB存储引擎,安装超简单,如下:

wKiom1OtPlfCi288AAKnwHfPFQI258.jpg

wKiom1OtM0XAGza2AAHWxjkDGtQ067.jpg

wKioL1OtMxeBeePWAAHBl7c2-ic775.jpg

wKiom1OtM0WD21kHAALMk2W8OOQ524.jpg


调优:

Configuration: what’s really important

As noted by Vadim long ago, “Tuning of TokuDB is much easier than InnoDB, there’re only a few parameters to change, and actually out-of-box things running pretty well“:
TokuDB调优比InnoDB简单的多,只是有一些参数变化,或者你直接使用默认参数,也运行的良好。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
MariaDB [(none)]> show variables like  '%tokudb%' ;
+---------------------------------+-------------+
| Variable_name                   | Value       |
+---------------------------------+-------------+
| tokudb_alter_print_error        | OFF         |
| tokudb_analyze_time             | 5           |
| tokudb_block_size               | 4194304     |
| tokudb_cache_size               | 120926208   |
| tokudb_checkpoint_lock          | OFF         |
| tokudb_checkpoint_on_flush_logs | OFF         |
| tokudb_checkpointing_period     | 60          |
| tokudb_cleaner_iterations       | 5           |
| tokudb_cleaner_period           | 1           |
| tokudb_commit_sync              | ON          |
| tokudb_create_index_online      | ON          |
| tokudb_data_dir                 |             |
| tokudb_debug                    | 0           |
| tokudb_directio                 | OFF         |
| tokudb_disable_hot_alter        | OFF         |
| tokudb_disable_prefetching      | OFF         |
| tokudb_disable_slow_alter       | OFF         |
| tokudb_empty_scan               | rl          |
| tokudb_fs_reserve_percent       | 5           |
| tokudb_fsync_log_period         | 0           |
| tokudb_hide_default_row_format  | ON          |
| tokudb_init_flags               | 11403457    |
| tokudb_killed_time              | 4000        |
| tokudb_last_lock_timeout        |             |
| tokudb_load_save_space          | ON          |
| tokudb_loader_memory_size       | 100000000   |
| tokudb_lock_timeout             | 4000        |
| tokudb_lock_timeout_debug       | 1           |
| tokudb_log_dir                  |             |
| tokudb_max_lock_memory          | 15115776    |
| tokudb_pk_insert_mode           | 1           |
| tokudb_prelock_empty            | ON          |
| tokudb_read_block_size          | 65536       |
| tokudb_read_buf_size            | 131072      |
| tokudb_read_status_frequency    | 10000       |
| tokudb_row_format               | tokudb_zlib |
| tokudb_tmp_dir                  |             |
| tokudb_version                  | 7.1.6       |
| tokudb_write_status_frequency   | 1000        |
+---------------------------------+-------------+
39 rows  in  set  (0.01 sec)


The most important of the tokudb_ variables is arguably tokudb_cache_size. The test server where I ran those tests (test01) have a little less than 1G of memory and as you can see above TokuDB is “reserving” half (50%) of them to itself. That’s the default behavior but, of course, you can change it. And you must do it if you are also going to have InnoDB tables on your server – you should not overcommit memory between InnoDB and TokuDB engines. Shlomi Noach wrote a good post explaining the main TokuDB-specific variables and what they do. It’s definitely a worth read.
(最重要的参数是tokudb_cache_size,它类似innodb_buffer_pool_size,如果你的服务器跑着两种引擎InnoDB和TokuDB,那么你得小心点了,别把内存用光了。)


参考:http://www.mysqlperformanceblog.com/2014/06/26/percona-server-with-tokudb-beta-installation-configuration/


注:因此引擎比较新,没有任何生产经验,可以试图把一些LOG日志表改为TokuDB引擎,这样在性能和磁盘空间使用率上都有较大幅度的提升。此外,该引擎的备份工具是收费,所以备份的时候可以采取冷备份。

wKioL1Ow1F6ihz-EAAHrNLCc_ao324.jpg


参考:http://www.mysqlperformanceblog.com/2014/06/23/getting-to-know-tokudb-for-mysql/
















本文转自hcymysql51CTO博客,原文链接:http://blog.51cto.com/hcymysql/1431698 ,如需转载请自行联系原作者









相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 关系型数据库 MySQL
1.7 【MySQL】常用存储引擎
1.7 【MySQL】常用存储引擎
57 0
|
8月前
|
存储 SQL 关系型数据库
Mysql系列-4.Mysql存储引擎-InnoDB(下)
Mysql系列-4.Mysql存储引擎-InnoDB
88 0
|
存储 SQL 监控
|
8月前
|
存储 缓存 关系型数据库
Mysql系列-4.Mysql存储引擎-InnoDB(上)
Mysql系列-4.Mysql存储引擎-InnoDB
83 0
|
存储 关系型数据库 MySQL
查看MySQL的当前存储引擎
查看MySQL的当前存储引擎
|
存储 缓存 关系型数据库
MySQL中的存储引擎详解
MySQL中的存储引擎详解
256 0
|
存储 SQL 缓存
详解MySQL存储引擎Innodb
详解MySQL存储引擎Innodb
499 0
详解MySQL存储引擎Innodb
|
存储 缓存 算法
MySQL的常见存储引擎
MySQL的常见存储引擎
277 0
|
存储 SQL 缓存
MySQL-存储引擎
MySQL-存储引擎
MySQL-存储引擎
|
存储 关系型数据库 MySQL
MySQL存储引擎的选择
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作
97 5