AliSQL發佈 更新動態加字段和Thread Pool

MySQL MariaDB CPU X86 雲棲社區 2017-05-04

更多深度文章,請關注雲計算頻道:https://yq.aliyun.com/cloud

動態加字段和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:

AliSQL發佈 更新動態加字段和Thread Pool

COMFORT:

AliSQL發佈 更新動態加字段和Thread Pool

2. Thread Pool

Description

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

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

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

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

AliSQL發佈 更新動態加字段和Thread Pool

AliSQL發佈 更新動態加字段和Thread Pool

相關推薦

推薦中...