Notice:
滚动升级顺序:BaikalMeta=>BaikalStore=>BaikalDB(本次升级需要严格按照这个顺序,否则会出现兼容性问题)
回滚步骤反过来:BaikalDB=>BaikalStore=>BaikalMeta
如没特殊说明,后续升级步骤都应该按上述顺序进行
New Features:
- 内部现在适配的是gcc12,rocksdb 7.10.2(c++17),protobuf_3-18-0-1,本次开源版本依赖未变,有能力同学可以适配下bazel依赖
- feat: update braft from v1.1.1 to v1.1.2
- 增加store单sign读请求的并发控制,去除new sign识别;两级并发参数,服务器配置高可以调大:sign_concurrency=8,global_select_concurrency=24,开关:open_sign_concurrency=true
- 支持单表多集群(resource_tag)概念,多副本可以在不同集群,例如:"dists": [ { "resource_tag":"a1","logical_room":"x", "count":2}, { "resource_tag":"a1","logical_room":"y", "count":1}, { "resource_tag":"a2","logical_room":"x", "count":1}, { "resource_tag":"a3","logical_room":"y", "count":1}]
- baikaldb支持访问指定的resource_tag,-fetcher_resource_tag=a1
- baikaldb支持follower read读取最新数据,配置-use_read_index=true
- rocksdb支持参数:rocks_use_sst_partitioner_fixed_prefix,rocks_use_ribbon_filter,rocks_use_hyper_clock_cache(rocksdb 7.10.2才能开)
- like表达式支持gbk和utf8(参考了tikv),解决gbk部分中文匹配错误问题,但是新实现性能比re2差
- 完善sql签名降级功能
- 快速导入功能优化
- full_export支持inner join limit下推多轮交互
- 支持copy_db复制整个db表结构,用于测试场景
- 索引选择预处理流程中如果遇到pk或uniquekey,并且条件为eq或in时直接选择
- column ddl复制列,走ddl流程:alter table t1 modify column set column2=column1 where column1!=column2;
- 优化分裂过程稳定性
- fulltext/hll多处优化
- 支持注释调整执行并发,防止脚本类大sql打挂集群,/*{"single_store_concurrency":1}*/
- mysql协议增加keepalive,降低客户端挂掉后事务残留时间
- 支持mysql建表语句,改成同步建表,建表后即可查询
- fulltext支持utf8编码
- 支持修改表的charset,ALTER TABLE tb DEFAULT CHARSET= gbk;
- 支持hash partition自定义表达式,partition功能达到可用状态,举例:PARTITION BY HASH (key & 0xABB % 16) PARTITIONS 16
- 分裂优化,分裂耗时更短
- ddl流程优化
- 支持\0转义
- 支持按user设置不同的锁超时时间
- store和db均支持sign黑名单拒绝:handle schema_conf {table_name} add_blacklist {sign}
- 迁移限速判断l0 sst数量,降低stall概率
- not null无default值时,插入null兼容mysql非严格模式,例如int类型会写入0,string类型写入空串
- binlog表增加字段
binlog_row_cnt
bigint(20) NOT NULL DEFAULT '1' - binlog增加sql等信息,用来支持sql闪回
- 通过表名鉴权,防止新表rename后无权限问题
- table可以分发给多个binlog表(可以不同partition)
- 增加abs函数对bigint的支持
- 支持modify columns修改默认值时, 原类型等于目的类型
- Update brpc url from incubator-brpc to brpc.
- 新增CAST '(' Expr AS VARCHAR ')' 与CAST '(' Expr AS DECIMAL ')'函数
- prepare模式计算sign
- print_query_time增加ip端口
- sign_forceindex
- add function json_extract
- suport '' as ' and "" as "
- add function json_extract
- support start transaction ISOLATION LEVEL
- support CREATE UNIQUE INDEX
- 兼容性提升
- feat: limit pushdown when multi-ranges in scan_node
- feat: group_concat support distinct, orderby, separator
Bug Fixes:
- binlog修复ts编码问题,对外订阅逻辑兼容,1h后会删除旧的cf,因此确保在老的binlog数据不再使用的时候上线binlog
- ttl decode bugfix
- 修复fetcher store出现old version可能丢数据问题
- 修复延时删除误删region
- 局部索引fix txn write skew
- agg空数据修复
- 修复多项事务bug,完善幂等处理,事务更稳定
- 修复a join b using(id)语法
- 内存限制bugfix
- 时间类型,时间函数等修复和兼容mysql
- insert ignore LOCK bugfix
- subquery txn_id bugfix
- substring_index空串死循环修复
- 修复update set a=a+1并发问题
- double to string增加精度
- insert select 修复时间类型
- fix binlog ttl功能
- merge region是否有数据double check
- 修复重启后产生大量bthread
- 修复数字like prefix不用索引
- join适配null相关函数
- 修复倒排删特殊列core
- 修复sort_limit_by_range问题
- read index广播采用log index
- update set null时binlog发送默认值
- 修复full export+partition表问题
- 修复ddl+分裂时可能丢index数据问题
- 修复update别名问题
- fix: update table alias logical error
- fix: read and write skew for global index
- COLUMNS表字段默认值区分空字符串和NULL
- 解决date,datetime,time,timestamp类型字段in子查询时,表达式为空问题
- filter_node debug log
- check for TIMESTAMP and DATETIME columns, you can specify CURRENT_TIMESTAMP as the default
- add column comptatible with collate
- db_version
- std::vector push_back coredump when double capacity
- SAFE_DELETE for expr_node& exec_node
- fix: subquery txn_id
Performance Improvements:
- binlog回退进度点性能优化
- 局部索引+binlog优化交互,降低延迟
- 支持multiget,默认打开:-scan_use_multi_get=true
- baikaldb索引计算优化
- baikalstore减少数据复制
- binlog支持multiget
- join性能优化,降低planrouter的开销
- ttl cache优化
- or,and支持多叉树
- a = 1or a= 2改写成a in (1,2);(a=1 and b=1) or (a=2 and b=2)改成成(a,b) in ((1,1),(2,2)),满足后续索引选择需求
- 优化mem check性能
- 优化baikaldb内部索引选择性能
- 倒排index里不使用pb
- partition路由优化
- 倒排or堆排序
- partition多项性能优化
- 全局索引先limit后回表优化
- 索引选择和索引range生成拆分,减少生成range开销