全部產品
Search
文件中心

PolarDB:使用說明

更新時間:Jul 06, 2024

PolarDB MySQL版支援使用X-Engine引擎,其具有較高的資料壓縮率,非常適合對計算訴求不高但需要儲存一些歸檔類資料(如DingTalk訊息等資料)的業務。X-Engine引擎可以與InnoDB引擎共存,對于歸檔類的資料採用X-Engine引擎進行壓縮儲存,以節省儲存成本。您可以參考如何開啟高壓縮引擎(X-Engine)文檔來開啟高壓縮引擎(X-Engine)。本文介紹PolarDB高壓縮引擎(X-Engine)相關的使用說明。

使用限制

  • 引擎功能限制

    X-Engine引擎在功能上有如下限制。

    分類

    功能

    說明

    SQL功能

    外鍵

    不支援

    暫存資料表

    不支援

    Generated Column

    不支援

    Handler API

    不支援

    列屬性

    最大列長度

    (longblob/longtext/json)

    32 MB

    GIS地理資料類型

    不支援所有GIS相關資料類型(包含geometry、point、linestring、polygon、multipoint、multilinestring、multipolygon、geometrycollection)

    索引

    雜湊索引

    不支援

    空間索引

    不支援(所有與全文索引相關的建立、使用均不支援)

    事務

    交易隔離等級

    支援如下2個隔離等級:

    • 讀已提交(RC)

    • 可重複讀(RR)

    單個事務支援的最巨量資料量

    32 MB

    Savepoint

    不支援

    XA事務

    支援內部XA事務

    鎖粒度

    • 支援表層級鎖和行層級鎖

    • 不支援GAP鎖

    Skip Locked

    不支援

    Lock Nowait

    不支援

    字元集

    非索引列支援的字元集

    非索引列支援所有的字元集(校對規則)

    索引列支援的字元集

    • latin1(latin1_bin)

    • gbk(gbk_chinese_ci、gbk_bin)

    • utf8(utf8_general_ci、utf8_bin)

    • utf8mb4(utf8mb4_0900_ai_ci、utf8mb4_general_ci、utf8mb4_bin)

    主從複製

    Binlog格式

    支援如下3種格式:

    • stmt

    • row

    • mixed

    說明

    預設為row,採用stmt/mixed在特定並發情境可能存在資料安全性問題。

    說明

    對於X-Engine引擎中其他未列出的功能,預設其功能特性與InnoDB引擎相同。

  • 大事務功能限制

    X-Engine目前不支援大事務。當一個事務修改的行數等於或大於10000行時,X-Engine會啟用commit in middle功能,即X-Engine會在內部提交該事務,並重新開啟一個子事務繼續執行該事務。但commit in middle並不能遵循嚴格意義上的事務原子性(Atomicity),因此您在使用過程中需要注意如下幾點:

    • 假設需要開啟一個事務插入大量資料,但在資料插入過程中,由於commit in middle功能,已經先提交了一部分資料,其它請求就可以訪問到插入的資料。

    • 假設需要開啟一個事務修改大量資料,已經執行了commit in middle的事務將無法復原。

      DROP TABLE t1;
      CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
      BEGIN;
      call insert_data(12000); //插入12000行資料,觸發commit in middle,前10000行資料已經提交。
      rollback;// 復原只能把最後2000條資料復原。
      SELECT COUNT(*) FROM t1; // 這裡仍然能夠查詢到10000條資料。
      +----------+
      | COUNT(*) |
      +----------+
      |    10000 |
      +----------+
      1 row in set (0.00 sec)
    • 假設開啟一個需要修改且刪除大量資料的事務,由於commit in middle功能,DELETE操作讀不到本事務中新插入的行,導致新插入的資料未被DELETE。

      DROP TABLE t1;
      CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
      call insert_data(10000);
      BEGIN;
      INSERT INTO t1 VALUES(10001,10001), (10002,10002);
      DELETE FROM t1 WHERE c1 >= 0;// DELETE操作觸發commit in middle,導致delete操作沒有讀到本事務插入的行。
      commit;
      SELECT * FROM t1;
      +-------+-------+
      | c1    | c2    |
      +-------+-------+
      | 10001 | 10001 |
      | 10002 | 10002 |
      +-------+-------+
      2 rows in set (0.00 sec)

將InnoDB引擎下的錶轉存至高壓縮引擎(X-Engine)

  1. 使用DMS、用戶端或命令列串連資料庫,具體操作請參見串連資料庫叢集

  2. 執行以下命令,將InnoDB引擎下的錶轉存至X-Engine引擎。

    ALTER TABLE <資料庫名>.<表名> ENGINE xengine;
    說明

    使用ALTER命令將InnoDB引擎下的錶轉存至X-Engine引擎的過程中,會阻塞轉換涉及的表的寫入操作(DML和DDL)。

在高壓縮引擎(X-Engine)中建立表

在雙引擎(InnoDB和X-Engine)叢集中建立位於X-Engine引擎的表,您需要在建立表時指定X-Engine引擎。文法樣本如下:

CREATE TABLE t1(c1 int primary key , c2 int) ENGINE=xengine;

參數說明

說明
  • 針對錶中可修改的參數,您可以根據業務需要進行修改。具體操作步驟,請參見設定叢集參數和節點參數

  • 表中所有參數在PolarDB控制台上都已加上MySQL設定檔的相容性首碼loose_

類別

參數

說明

是否支援修改

參數修改後,是否需要重啟叢集生效

效能

xengine_batch_group_max_group_size

事務流水線最大分組數。

不涉及

xengine_batch_group_max_leader_wait_time_us

事務流水線的最大等待時間。

不涉及

xengine_batch_group_slot_array_size

事務流水線最大batch大小。

不涉及

xengine_parallel_read_threads

並行掃描並發數。

xengine_parallel_wal_recovery

並行恢複。

不涉及

記憶體

xengine_block_cache_size

讀block緩衝的大小。

不涉及

xengine_row_cache_size

行緩衝的大小。

不涉及

xengine_write_buffer_size

單Memtable的最大大小。

不涉及

xengine_block_size

磁碟上資料block大小。

不涉及

xengine_db_write_buffer_size

所有subtable的Active Memtable的總大小限制。

不涉及

xengine_db_total_write_buffer_size

所有subtable的Active Memtable/Immutable memtable的總大小限制。

不涉及

xengine_scan_add_blocks_limit

每個請求在範圍掃描時,可以加到BlockCache中的Block數目。

compaction

xengine_flush_delete_percent_trigger

當Memtable中記錄數超過此數目時,則xengine_flush_delete_record_trigger參數生效。

不涉及

xengine_max_row_locks

單SQL請求中,最大可以鎖定的行數。

不涉及

xengine_lock_wait_timeout

鎖等待逾時時間。