日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Statement Concurrency Control

為了應(yīng)對突發(fā)的數(shù)據(jù)庫請求流量、資源消耗過高的語句訪問以及SQL訪問模型的變化, 保證MySQL實(shí)例持續(xù)穩(wěn)定運(yùn)行,PolarDB-X標(biāo)準(zhǔn)版提供基于語句規(guī)則的并發(fā)控制CCL(Concurrency Control),并提供了工具包(DBMS_CCL)便于您快捷使用。

前提條件

實(shí)例版本為PolarDB-X標(biāo)準(zhǔn)版,引擎為MySQL 8.0。

注意事項(xiàng)

  • CCL的操作不產(chǎn)生日志,所以CCL的操作只影響當(dāng)前實(shí)例。例如主實(shí)例進(jìn)行CCL操作,不會同步到備實(shí)例、只讀實(shí)例或?yàn)?zāi)備實(shí)例。

  • CCL提供超時(shí)機(jī)制以應(yīng)對DML導(dǎo)致事務(wù)鎖死鎖,等待中的線程也會響應(yīng)事務(wù)超時(shí)和線程KILL操作以應(yīng)對死鎖。

功能設(shè)計(jì)

CCL規(guī)則定義了如下三個(gè)維度的特征:

  • SQL command

    SQL命令類型,例如SELECT、UPDATE、INSERT、DELETE等。

  • Object

    SQL命令操作的對象,例如TABLE、VIEW等。

  • keywords

    SQL命令的關(guān)鍵字。

創(chuàng)建CCL規(guī)則表

PolarDB-X標(biāo)準(zhǔn)版設(shè)計(jì)了一個(gè)系統(tǒng)表(concurrency_control)保存CCL規(guī)則,系統(tǒng)啟動(dòng)時(shí)會自動(dòng)創(chuàng)建該表,無需您手動(dòng)創(chuàng)建。這里提供表的創(chuàng)建語句供您參考:

CREATE TABLE `mysql`.`concurrency_control` (
  Id bigint AUTO_INCREMENT NOT NULL,
  Type enum('SELECT','UPDATE','INSERT','DELETE') COLLATE utf8mb3_general_ci DEFAULT 'SELECT' NOT NULL,
  Schema_name varchar(64),
  Table_name varchar(64),
  Concurrency_count bigint NOT NULL,
  Keywords text,
  State enum('N','Y') COLLATE utf8mb3_general_ci DEFAULT 'Y' NOT NULL,
  Ordered enum('N','Y') COLLATE utf8mb3_general_ci DEFAULT 'N' NOT NULL,
  PRIMARY KEY Rule_id(id)
) Engine=InnoDB STATS_PERSISTENT=0 CHARACTER SET=utf8mb3 COLLATE=utf8mb3_bin comment='Concurrency control' TABLESPACE=mysql

參數(shù)

說明

Id

CCL規(guī)則ID。

Type

SQL command,即SQL命令類型。

Schema_name

數(shù)據(jù)庫名。

Table_name

數(shù)據(jù)庫內(nèi)的表名。

Concurrency_count

并發(fā)數(shù)。

Keywords

關(guān)鍵字,多個(gè)關(guān)鍵字用英文分號(;)分隔。

State

本規(guī)則是否啟用。

Ordered

Keywords中多個(gè)關(guān)鍵字是否按順序匹配。

管理CCL規(guī)則

為了便捷地管理CCL規(guī)則,PolarDB-X標(biāo)準(zhǔn)版在DBMS_CCL中定義了三個(gè)本地存儲規(guī)則。詳細(xì)說明如下:

  • add_ccl_rule

    增加規(guī)則,命令如下:

    dbms_ccl.add_ccl_rule('<Type>','<Schema_name>','<Table_name>',<Concurrency_count>,'<Keywords>');

    增加規(guī)則,SELECT語句的并發(fā)數(shù)為10,示例如下:

    mysql> call dbms_ccl.add_ccl_rule('SELECT', '', '', 10, '');

    增加規(guī)則,SELECT語句中出現(xiàn)關(guān)鍵字key1的并發(fā)數(shù)為20,示例如下:

    mysql> call dbms_ccl.add_ccl_rule('SELECT', '', '', 20, 'key1');
    說明

    Id越大,規(guī)則的優(yōu)先級越高。

  • del_ccl_rule

    刪除規(guī)則,命令如下:

    dbms_ccl.del_ccl_rule(<Id>);

    刪除規(guī)則ID為15的CCL規(guī)則,示例如下:

    mysql> call dbms_ccl.del_ccl_rule(15);
    說明

    如果刪除的規(guī)則不存在,系統(tǒng)會報(bào)相應(yīng)的警告,您可以使用show warnings;查看警告內(nèi)容。

    mysql> call dbms_ccl.del_ccl_rule(100);
      Query OK, 0 rows affected, 2 warnings (0.00 sec)
    
    mysql> show warnings;
    +---------+------+----------------------------------------------------+
    | Level   | Code | Message                                            |
    +---------+------+----------------------------------------------------+
    | Warning | 7514 | Concurrency control rule 100 is not found in table |
    | Warning | 7514 | Concurrency control rule 100 is not found in cache |
    +---------+------+----------------------------------------------------+
  • show_ccl_rule

    查看內(nèi)存中已啟用規(guī)則。命令如下:

    dbms_ccl.show_ccl_rule();

    示例:

    mysql> call dbms_ccl.show_ccl_rule();
    +------+--------+--------+-------+-------+-------+-------------------+---------+---------+----------+----------+
    | ID   | TYPE   | SCHEMA | TABLE | STATE | ORDER | CONCURRENCY_COUNT | MATCHED | RUNNING | WAITTING | KEYWORDS |
    +------+--------+--------+-------+-------+-------+-------------------+---------+---------+----------+----------+
    |   17 | SELECT | test   | t     | Y     | N     |                30 |       0 |       0 |        0 |          |
    |   16 | SELECT |        |       | Y     | N     |                20 |       0 |       0 |        0 | key1     |
    |   18 | SELECT |        |       | Y     | N     |                10 |       0 |       0 |        0 |          |
    +------+--------+--------+-------+-------+-------+-------------------+---------+---------+----------+----------+

    關(guān)于MATCHEDRUNNINGWAITTING的說明如下:

    參數(shù)

    說明

    MATCHED

    規(guī)則匹配成功次數(shù)。

    RUNNING

    此規(guī)則下正在并發(fā)執(zhí)行的線程數(shù)。

    WAITTING

    此規(guī)則下正在等待執(zhí)行的線程數(shù)。

  • flush_ccl_rule

    如果您直接操作了表concurrency_control修改規(guī)則,規(guī)則不能立即生效,您需要讓規(guī)則重新生效。命令如下:

    dbms_ccl.flush_ccl_rule();

    示例:

    mysql> update mysql.concurrency_control set CONCURRENCY_COUNT = 15 where Id = 18;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> call dbms_ccl.flush_ccl_rule();
    Query OK, 0 rows affected (0.00 sec)

功能測試

  • 測試規(guī)則

    設(shè)計(jì)如下三條規(guī)則,對應(yīng)三個(gè)維度:

    -- SELECT命令操作表sbtest1并發(fā)數(shù)為3
    call dbms_ccl.add_ccl_rule('SELECT', 'test', 'sbtest1', 3, '');
    
    -- SELECT命令關(guān)鍵字sbtest2并發(fā)數(shù)為2
    call dbms_ccl.add_ccl_rule('SELECT', '', '', 2, 'sbtest2');  
    
    -- SELECT命令并發(fā)數(shù)為2
    call dbms_ccl.add_ccl_rule('SELECT', '', '', 2, '');
  • 測試場景使用sysbench進(jìn)行測試,場景如下:

    • 64 threads

    • 4 tables

    • select.lua

  • 測試結(jié)果查看規(guī)則并發(fā)數(shù)情況如下:

    mysql> call dbms_ccl.show_ccl_rule();
    +------+--------+--------+---------+-------+-------+-------------------+---------+---------+----------+----------+
    | ID   | TYPE   | SCHEMA | TABLE   | STATE | ORDER | CONCURRENCY_COUNT | MATCHED | RUNNING | WAITTING | KEYWORDS |
    +------+--------+--------+---------+-------+-------+-------------------+---------+---------+----------+----------+
    |   20 | SELECT | test   | sbtest1 | Y     | N     |                 3 |     389 |       3 |        9 |          |
    |   21 | SELECT |        |         | Y     | N     |                 2 |     375 |       2 |       14 | sbtest2  |
    |   22 | SELECT |        |         | Y     | N     |                 2 |     519 |       2 |       34 |          |
    +------+--------+--------+---------+-------+-------+-------------------+---------+---------+----------+----------+
    3 rows in set (0.00 sec)

    查看RUNNING列,符合預(yù)期的并行數(shù)量。