Skip to content

BaikalDB v2.2.0

Latest
Compare
Choose a tag to compare
@lgqss lgqss released this 24 Jul 08:48
· 17 commits to master since this release
84ef9c2

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开销