Percona TokuDB

来源:http://www.cnblogs.com/Amaranthus/archive/2016/09/01/5830300.html
-Advertisement-
Play Games

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 線上添加,刪除 ...


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

 

1.  TokuDB說明

具體看:

https://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_intro.html

2.  TokuDB安裝

Percona Server相容獨立可用的TokuDB存儲引擎包。TokuDB引擎必須分開下載然後以插件的形式啟用。這個包可以獨立安裝,不需要任何特定的版本的Percona Server

TokuDB存儲引擎是可擴展,ACIDMVCC的存儲引擎,提供基於索引查詢,提供online的框架修改和減少slave延遲。這個存儲引擎設計師為了寫入性能,是基於fractal tree的。

警告:

       目前percona提供的TokuDB被使用在Percona Server 5.7TokuDB引擎從其他地方下載的不能被相容。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)

3.  使用TokuDB

3.1 快速插入和富索引

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.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中會顯示被鎖定。推薦在創建索引完成之後再來執行下一個。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在SQL Server中,需要對數據操作進行先SELECT 之後UPDATE,對於這樣的操作,如果出現高併發,可能導致臟讀情況的發生。不能保證數據的同步。 解決方案是在事物中對錶進行加更新鎖: 事務一: 事務二: ...
  • 經典的關聯規則挖掘演算法Apriori和FP-growth,在大數據或者海量數據面前,由於候選集和生成的FP樹大而無法存儲到記憶體,同時也由於演算法本身單機的特點,決定了它串列處理數據的方式,這在效率上很難滿足大數據處理的要求,數據遷移到平臺需要傳輸和轉儲,在大數據面前,也是一大難題。 一般而言"關聯規則 ...
  • 01.MyISAM 01.MyISAM MySQL 5.0 以前的預設存儲引擎。MyISAM 不支持事務、也不支持外鍵,其優勢是訪問的速度快,對事務完整性沒有要求或者以SELECT、INSERT 為主的應用基本上都可以使用這個引擎來創建表。 每個MyISAM 在磁碟上存儲成3 個文件,其文件名都和表 ...
  • 上篇講解了redis在windows下的安裝,接下來看看在linux下如何安裝redis(純菜鳥入門級別)? (1)redis的下載及編譯 這裡,首先進入存放文件目錄(我的雲伺服器的是:cd /jelly/redis/) wget http://download.redis.io/releases/ ...
  • SparkSQL是指整合了Hive的spark-sql cli, 本質上就是通過Hive訪問HBase表,具體就是通過hive-hbase-handler, 具體配置參見:Hive(五):hive與hbase整合 目錄: SparkSql 訪問 hbase配置 測試驗證 SparkSql 訪問 hb ...
  • 1.linux版mysql下載(建議不要下5.7,安裝的時候各種bug啊,5.6是最好) 到mysql官網下載mysql編譯好的二進位安裝包,在下載頁面Select Platform:選項選擇linux-generic,然後把頁面拉到底部,64位系統下載Linux - Generic (glibc ...
  • 隨著互聯網、信息技術以及雲計算的高速發展,當今社會已進入了海量數據的時代。不管是移動通信、電商金融還是物聯網等各個領域,每天都會產生巨量的各種不同類型的數據。如何從這些龐大的、結構各異的、而又摻雜著大量雜訊的數據中提取出隱含在其中的具有一定意義的知識或規則,正是關聯規則提取的研究內容。 傳統的關聯規 ...
  • 當查詢表結構完全相同的多張表的數據時: 1.當查詢條件完全相同且不包括主鍵,此時用union查詢會過濾掉查詢出的重覆的記錄,及漏查記錄;使用union all進行查詢,則會查出所有的符合條件的記錄,保證數據的完整性。 2.當查詢條件完全相同且包含主鍵,此時用union和union all查詢出來的記 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...