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...]
其中:
- extra_bytes中info_bits占用一個bit來標識comfort記錄.
- 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:
COMFORT:
2. Thread Pool
Description
Thread Pool模型,使用限定的有限的CPU(x86)調度單元線程來服務client端的請求,在麵對大量的client連接請求的時候,維持MySQL server的吞吐量持續穩定。
AliSQL 從 MariaDB port此功能,這裏做下高並發情況下性能穩定性測試供參考:
最後更新:2017-05-03 17:30:56