天天看點

青年節獻禮:AliSQL青年節版本Release 增動态加字段和Thread Pool

加字段作為業務需求變更中最常見的需求,InnoDB引擎表的加字段功能一直以來被運維人員所诟病,

雖然支援了online方式,但随着表空間越來越大,copy整張表的代價也越來越大。

AliSQL版本在InnoDB的compact記錄格式的基礎上,設計了新的記錄格式comfort,支援動态加字段。

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

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

[lens | n_nulls | n_fields | extra_bytes | id...]

其中:

extra_bytes中info_bits占用一個bit來辨別comfort記錄.

n_fields占用1或者2個bytes來辨別目前記錄的column數量.

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

注意:

動态加的字段需要添加在表結構的最後,可為空,并且沒有設定預設值的column。

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

青年節獻禮:AliSQL青年節版本Release 增動态加字段和Thread Pool
青年節獻禮:AliSQL青年節版本Release 增動态加字段和Thread Pool

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

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

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

青年節獻禮:AliSQL青年節版本Release 增動态加字段和Thread Pool

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

青年節獻禮:AliSQL青年節版本Release 增動态加字段和Thread Pool

繼續閱讀