閱讀778 返回首頁    go 阿裏雲 go 技術社區[雲棲]


AliSQL 5.4青年節版本Release: 動態加字段和Thread Pool

動態加字段和Thread Pool

Abstract

加字段作為業務需求變更中最常見的需求,InnoDB引擎表的加字段功能一直以來被運維人員所詬病,
雖然支持了online方式,但隨著表空間越來越大,copy整張表的代價也越來越大。
AliSQL版本在InnoDB的compact記錄格式的基礎上,設計了新的記錄格式comfort,支持動態加字段。

MySQL默認的one-thread-per-connection的線程模型,在麵對大並發的連接請求的時候,變成了性能殺手,隨著線程的增多,吞吐能力會急劇下降。AliSQL 引入了MariaDB版本的Thread Pool線程模型,以應對大並發連接請求的時候,保證持續穩定的性能。

AliSQL REPO: https://github.com/alibaba/AliSQL
AliSQL Release Notes: https://github.com/alibaba/AliSQL/wiki/Changes-in-AliSQL-5.6.32-(2017-05-04)

1. Add Column Dynamically

Description

AliSQL設計了一種新的記錄格式,命名為comfort,其格式從compact演化而來,格式如下:

[lens | n_nulls | n_fields | extra_bytes | id...]
其中:

  1. extra_bytes中info_bits占用一個bit來標識comfort記錄.
  2. n_fields占用1或者2個bytes來標識當前記錄的column數量.

相對於compact格式增加了空間的使用,但對於當前磁盤來講,基本可以忽略不計。

注意:
動態加的字段需要添加在表結構的最後,可為空,並且沒有設置默認值的column。

Syntax

CREATE TABLE t (
  id INT
)ENGINE=InnoDB ROW_FORMAT=comfort.

ALTER TABLE t ADD col1 INT;

對比compact和comfort記錄格式的加字段效果:

COMPACT:

y.png

COMFORT:

x.png

2. Thread Pool

Description

Thread Pool模型,使用限定的有限的CPU(x86)調度單元線程來服務client端的請求,在麵對大量的client連接請求的時候,維持MySQL server的吞吐量持續穩定。

AliSQL 從 MariaDB port此功能,這裏做下高並發情況下性能穩定性測試供參考:

  1. Sysbench UPDATE場景Thread Pool和one-thread-per-connection的對比測試:
    TP1.png

  2. Sysbench OLTP場景Thread Pool和one-thread-per-connection的對比測試:
    tp2.png

最後更新:2017-05-03 17:30:56

  上一篇:go 僅為代碼實際運行資源付費 解構阿裏雲函數計算
  下一篇:go 中國首個光量子計算機誕生 中科院、阿裏巴巴共同研發