青年节献礼:AliSQL青年节版本Release 增动态加字段和Thread Pool

简介: AliSQL 5.4版本Release: 动态加字段和Thread Pool; 加字段作为业务需求变更中最常见的需求,InnoDB引擎表的加字段功能一直以来被运维人员所诟病, 虽然支持了online方式,但随着表空间越来越大,copy整张表的代价也越来越大。

动态加字段和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
目录
相关文章
|
4月前
|
存储 固态存储 关系型数据库
【MySQL技术内幕】2.5-Master Thread工作方式
【MySQL技术内幕】2.5-Master Thread工作方式
32 0
|
SQL 监控 关系型数据库
『叶问』#40,MySQL进程号、连接ID、查询ID、InnoDB线程与系统线程如何对应
『叶问』#40,MySQL进程号、连接ID、查询ID、InnoDB线程与系统线程如何对应
565 0
|
SQL Java 关系型数据库
并发情况下切忌通过java代码更新mysql资金字段
并发情况下切忌通过java代码更新mysql资金字段
131 0
|
SQL 监控 关系型数据库
【DB吐槽大会】第40期 - PG 缺少qps计数器
大家好,这里是DB吐槽大会,第40期 - PG 缺少qps计数器
|
关系型数据库 MySQL SQL
新功能初探 | MySQL 8.0.17重量级功能:clone plugin
MySQL8.0.17推出了一个重量级的功能:clone plugin。允许用户可以将当前实例进行本地或者远程的clone。这在某些场景尤其想快速搭建复制备份或者在group replication里加入新成员时非常有用。本文主要试玩下该功能,并试图阐述下其实现的机制是什么。
1014 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL Heap Only Tuple - HOT (降低UPDATE引入的索引写IO放大)
标签 PostgreSQL , Heap Only Tuple , HOT 背景 PostgreSQL目前默认的存储引擎在更新记录时,会在堆内产生一条新版本,旧版本在不需要使用后VACUUM回收,回收旧版本前,需要先回收所有关联这个版本的所有索引POINT。
2540 0
|
关系型数据库 MySQL
MySQL · 特性分析 · innodb_buffer_pool_size在线修改
InnoDB Buffer Pool缓存了表数据和二级索引在内存中,提高数据库效率,因此设置innodb_buffer_pool_size到合理数值对实例性能影响很大。当size设置偏小,会导致数据库大量直接磁盘的访问,而设置过大会导致实例占用内存太多,容易发生OOM。
4532 0
|
SQL AliSQL 关系型数据库
AliSQL 20180124 版本发布 支持 CPU TIME 和优化 BINLOG 应用时索引选择
AliSQL 在线程级别增加了 CPU time 的性能指标,可以用来度量某个SQL或者执行单元所耗费的CPU 时间片,便于性能诊断。 当 Binlog 为 Row 模式的情况下,备库在同步更新时,索引的选择是基于简单规则的,没有走优化器的代价模型,所以有可能会因为索引选择不当导致主备有较大的延迟。
2213 0
下一篇
无影云桌面