BaikalDB 2.0.0 版本发布

来源: 投稿
作者: BaikalDB
2021-05-21

Release BaikalDB v2.0.0 · baidu/BaikalDB (github.com)

Notice:  

滚动升级顺序:BaikalMeta=>BaikalStore=>BaikalDB
如没特殊说明,后续升级步骤都应该按上述顺序进行

New Features:

  • 支持cmake编译
  • 增加bvar监控
  • 修复部分统计信息问题
  • 支持b'11'、 0b11、 x'AA'、 0xAA 字面
  • 支持子查询
  • 支持table t1 join table t2
  • 支持binlog
  • 增加全局索引的online ddl操作,alter table xxx add index global idx(filed);
  • 代价相关会结合一些规则判断,增加索引选择正确率
  • 暂时使用直方图+内部的distinct count做等值判断,cmskectch在大表情况下准确性较低
  • 支持information_schema流程 ,需要添加新的information_schema的表可以参考src/common/information_schema.cpp
  • 统计信息和规则选择索引部分做了修改,选择更准确些
  • 增加虚拟索引,alter table id_name_c add VIRTUAL index idx_name (name); 查看受影响的sql:show virtual index;用来新建索引前评估影响
  • using docker-compose to build a minimal three node cluster
  • 增加roaringbitmap,可以用于精确统计一些uv,用法与hll类似
  • 增加TDIGEST用来做分位值的估算
  • 增加db探测store的功能,在单个store假死的情况下可以快速恢复系统,集群更稳定
  • addpeer前会检查rocksdb是否stalling,提前拒绝addpeer,减少禁写风险
  • 增加dataindex,在install snapshot时会判断follower的数据是否已经是新的
  • 默认从snappy改成增加lz4压缩
  • 最底层增加zstd压缩,通过-enable_bottommost_compression开启
  • add funcs: date_add, date_sub, utc_timestamp, last_insert_id
  • rocksdb事务锁改成bthread锁;不阻塞pthread
  • store增加令牌桶流控(qos),对每类sql做并发限制,降低突发流量对正常sql的影响,默认不开启
  • 对每个请求做内存限制,通过db_sql_memory_bytes_limit(8G)和store_sql_memory_bytes_limit(16G)控制
  • 定期调用tcmalloc接口回收内存src/common/memory_profile.cpp
  • 支持loaddata语句,load的文件目前只能放在server端(相对于baikaldb的路径)
  • 一个表多机房时可以设置一个主机房(main_logical_room),leader总是在主机房内
  • 增加索引屏蔽概念,已屏蔽的索引不会被选择,在线索引操作调整:

    - drop index设置屏蔽状态,2天(table_tombstone_gc_time_s)后自动发起删除流程;目的是删错索引可以快速restore恢复,减少误操作影响
    - add index流程走完后,索引为屏蔽状态,需要二次确认restore;防止流程走完后,索引影响老业务,并且无人关注到
   - 屏蔽状态的索引转为正常索引:alter table xxx restore index idx

Bug Fixes:

  • 修复meta双buf问题
  • 修复多次删除创建同名后restore恢复表不一致问题
  • 单语句事务可能会导致raft卡住的bug修复
  • 修复之前GetApproximateSizes不准的bug
  • 修复一些可能的内存泄露问题
  • 修复只读事务bug,优化部分流程
  • prepare insert current time default value
  • fix count(*) return NULL expected 0 when filter expr is always false
  • ignore non-json format comment for sql string
  • update last_insert_id when client set the value

Performance Improvements:

  • 主表、索引覆盖、全局索引seek优化,去除table_record到mem_row的转化
  • 通过plan复用优化select prepare stmt性能
  • 提升cstore扫描性能
  • 降低qos,memlimit的开销
  • 增加了推荐的conf配置
展开阅读全文
3 收藏
分享
加载中
更多评论
0 评论
3 收藏
分享
返回顶部
顶部