欢迎来到厦门皓佑物联科技有限公司官方网站!
您的位置: 首页 - 新闻资讯 - 2022上半年盘点:20+主流数据库重大更新及技术要点汇总

2022上半年盘点:20+主流数据库重大更新及技术要点汇总

来源:新闻资讯 / 时间: 2024-11-23

 

2022年上半年,MySQL 8.0发布了8.0.28和8.0.29两个版本,修复了大量的bug,在性能和稳定性方面进一步增强。另外,HeatWave发布了重磅的机器学习功能,以下是详细介绍。
 
一、优化
 
InnoDB:InnoDB现在支持 ALTER TABLE ... RENAME COLUMN和ALTER TABLE ... DROP COLUMN使用 ALGORITHM=INSTANT。该操作只修改数据字典中元数据,表数据不受影响,使操作可以瞬时完成。如果未明确指定,只要该DDL支持INSTANT操作,会默认使用。
 
从MySQL 8.0.29开始,可以将瞬时添加的列添加到表中的任何位置,瞬时添加或删除的列会创建一个新的行版本。最多允许64行版本。
 
二、复制和克隆
 
replica_parallel_type系统变量现在已被弃用;每当读取或设置这个变量,或者在my.cnf中设置该选项时,服务器就会发出弃用警告。
 
8.0.29版本引入了binlog_expire_logs_auto_purge系统变量来控制服务器自动清除二进制日志文件。
 
group_replication_set_as_primary函数,可以指定新的master成员,用于覆盖自动选举过程产生的master成员。
 
克隆:增加系统变量“clone_delay_after_data_drop”,允许在接收者删除数据之后增加延时,以使接收者在开始克隆之前释放足够的空间。
 
三、运维监控
 
Performance Schema的变化:计时器THREAD_CPU已添加到Performance Schema PERFORMANCE_TIMERS表中。
 
tmp_table_size变量现在定义由TempTable存储引擎创建的单个内存内部临时表的最大大小。适当的大小限制可防止单个查询消耗过多的全局TempTable资源。
 
innodb_open_files变量定义了InnoDB一次可以打开的文件数,现在可以在运行时使用语句进行设置。方法是执行SELECT innodb_set_open_files_limit(N)。
 
8.0.28版本起在全局和每个用户的基础上引入了对内存分配的监视和限制。现在可以通过检查Global_connection_memory状态变量的值来观察所有用户连接消耗的总内存,该变量必须通过设置global_connection_memory_tracking = 1来启用。
 
字符串:服务器在使用“SHOW”语句输出及报告无效字符时,使用utf8mb3代替之前使用的utf8。
 
四、开发
 
时间格式:MySQL之前对时间格式的分隔符或空白等要求宽松,从8.0.29版本开始,则推荐用户使用标准格式,使用其他格式将输出警告信息。
 
派生的物化表条件推送优化现在可以在大多数的union语句使用。这意味着外部 WHERE条件现在可以推送到物化派生表或视图的查询表达式中的每个查询块中。
 
函数FROM_UNIXTIME (), UNIX_TIMESTAMP (),和CONVERT_TZ ()可以处理64位的值,FROM_UNIXTIME ()现在支持最大的参数是32536771199.999999秒,对应'3001-01-18 23:59:59.999999' UTC。UNIX_TIMESTAMP ()支持接收最大值'3001-01-18 23:59:59.999999' UTC,对应32536771199.999999秒。
 
字符集latin1的快捷方式ASCII和UNICODE的快捷方式ucs2被弃用,MySQL的未来版本中将删除它们。用户可以使用CHARACTER SET代替。
 
五、HeatWave
 
HeatWave用户现在可以使用内置的HeatWave机器学习(ML),这是一种完全托管、高度可扩展、经济高效的机器学习解决方案,适用于存储在MySQL中的数据。HeatWave ML提供了一个简单的SQL接口,用于训练和使用预测机器学习模型,新手和经验丰富的ML从业者都可以使用。使用HeatWave ML,用户只需调用SQL即可训练模型。同样,用户可以使用单个语句生成预测,从而轻松地集成到用户的应用程序中。
 
HeatWave现在支持多达1017个基本关系列(加载到HeatWave中的表),以及多达1800个中间关系列(查询处理期间使用的中间表)。基本关系和中间关系的最大列宽增加到了65532字节。
 
注:关于上述更新的详情,可阅读本期Newsletter完整版(点击本文文末【阅读原文】可下载)

 

 
MariaDB 10.8新特性

 

一、Alter修改表结构实现从库无延迟并行复制
 
通常,ALTER TABLE主库上执行完毕后,才会被复制并开始在从库上执行。有了这个特性后,当ALTER TABLE在主库上开始执行时,它会立刻被复制并开始在从库上执行,完全消除了从库的复制滞后,实现了从库无延迟并行复制。
 
使用:

MariaDB[test]> set global binlog_alter_two_phase=1;MariaDB[test]> set binlog_alter_two_phase=1;MariaDB[test]> alter table sbtest1 add index IX_pad(pad);

 

ALTER TABLE回车后,可以立即用mysqlbinlog工具去查看binlog,此时LTER TABLE语句已经记录在binlog文件里。
 
二、多源复制支持MySQL样式的CHANNEL语法
 
多源复制可以实现数据分析部门的需求,将多个系统的数据汇聚到一台服务器上进行OLAP(联机分析处理)计算。在10.7及以上版本里,支持MySQL 5.7多源复制的语法。
 
三、支持降序索引
 
从10.8版本开始支持降序索引(InnoDB引擎)。可以直接将索引定义为DESC,这样在存储的时候就是降序保存的,在进行降序扫描时,性能会得到大幅度提升。当然,这样做最大的好处是,我们可以用索引处理(order by a desc,b asc,c desc)混合排序的查询了。在10.8之前的版本中,排序的字段顺序必须一致,否则使用不到索引,通过explain命令查看,结果中会出现文件排序(filesort)。
 
四、MariaDB Xpand分布式数据库发布
 
MariaDB Xpand是一款(MySQL客户端协议)在线事务处理(OLTP)分布式数据库(对标PostgreSQL协议的CockroachDB),Xpand则是存储引擎。
 
使用MariaDB Xpand需要许可证密钥(45天非生产试用期)。软件下载地址 https://mariadb.com/downloads/#xpand
 
特点:
  • 符合ACID的分布式数据库,适用于海量数据、高并发和强一致性在线事务处理(OLTP);
  • 弹性动态横向扩容;
  • Paxos高可用性;
  • 数据分布通过Xpand水平划分为切片,并将切片的副本(默认两个)分布在节点之间;
  • 无限读写扩展,采用无共享架构;
  • 支持复杂查询(例如JOIN和分组聚合操作)。
 
注:关于上述更新的详情,可阅读本期Newsletter完整版(点击本文文末【阅读原文】可下载)

 

 
PostgreSQL发布15 beta 1和14.4版本

 

2022年1月至今,PostgreSQL发布了15 beta 1和14.4等多个版本,其中值得关注的增强有:
 
一、性能增强
 
  1. 排序性能提升显著,尤其是在需要排序的数据量超过了work_mem的情况下,in-memory的排序性能也有所提升;
  2. group by会自动优化列的顺序;
  3. postgres_fdw外部表支持下推case when表达式;
  4. 窗口函数row_number(), rank()和count()性能提升;
  5. full-page-write全页写支持lz4和zstd压缩算法;
  6. \copy元命令加载性能提升;
  7. pg_upgrade和pg_dump性能提升。
 
二、逻辑复制增强
 
  1. 支持直接发布某个模式下的所有表;
  2. 发布端支持指定某些列进行发布,比如create publication pub1 for table t2(info);
  3. 发布端支持过滤条件,比如create publication p2 for table t1, t2 where (e = 99);
  4. 原生逻辑复制支持预备事务。
 
三、并行增强
 
  1. select distinct支持并行,并行特性继续加强;
  2. postgres_fdw()支持并行提交,之前的版本是本地事务提交之后再串行提交远端事务;
  3. 外部表的查询现在可以在更多的情况下使用并行扫描。
 
四、其他增强
 
  1. 支持merge语法,以前的版本可以使用insert ... on conflict替代;
  2. 新增多种正则表达式,regexp_count(),regexp_instr(),regexp_like()和regexp_substr();
  3. 新增SQL/JSON构造器;
  4. 新增SQL/JSON查询函数,json_exists()、json_query()和json_value();
  5. 唯一约束和索引支持将NULL视为不同的值,之前的版本需要使用表达式索引进行限制;
  6. 日志支持JSON格式。
 
五、相关动态
 
CitusData于日前推出了Citus 11.0,并宣布将所有企业版的特性都进行开源。此前,Citus在版本更新时通常会同步发布2个版本:开源版本和包含一些额外功能的企业版本。
 
14.4版本修复了之前的14.0、14.1和14.2三个版本中使用create index concurrently和reindex concurrently导致索引损坏的BUG,会导致数据不一致,需要尽快升级至14.4版本。
 
注:关于上述更新的详情,可阅读本期Newsletter完整版(点击本文文末【阅读原文】可下载)

 

 
OceanBase企业版及社区版共迭代9个版本

 

2022年1月至今,OceanBase数据库共计迭代9个版本(企业版及社区版),进一步提升与增强性能、安全性、兼容性、诊断监控等企业级核心能力。其中,OceanBase 3.2.3作为3.x的LTS版本,是完整HTAP能力的重要里程碑,新特性如下:
 
一、OceanBase企业版关键特性
 
  1. HTAP能力:全面实现向量化引擎,支持所有基础算子向量化,复杂查询场景下带来数量级的性能飞跃,TPC-H性能相比OceanBase 2.2.x提升10倍。
     
  2. 性能:优化Nest Loop Join,性能提升1倍;支持多表关联SQL语句转化为Nest Loop Join执行计划,通过算子优化大幅提升多表关联性能;提升Table API流式扫描性能,OceanBase 3.2.3流式扫描性能达到HBase 2.4.6的2.2倍。
     
  3. 兼容性:Oracle模式新增DBLink功能,支持用户通过DBLink访问Oracle的数据;MySQL模式引入Oracle模式的Sequence功能。兼容MySQL 8.0 CTE和CHECK检查约束功能。
     
  4. 诊断监控:存储过程支持GET DIAGNOSTICS诊断,可使用该功能获取SQL语句或者存储过程执行时的错误信息,帮助用户快速定位、排查解决问题;OCP引入SQL画像和事务画像功能。
     
  5. 安全性:新增备份恢复完整性校验功能,帮助用户快速发现磁盘静默故障;ODC支持操作记录审计功能,自动记录所有的数据库变更操作。
 
二、OceanBase社区版关键特性
 
  1. 支持OBKV能力:提供HBase模型和Table模型的NoSQL能力。读写综合性能超越HBase,且能复用OceanBase底层的强一致和异地容灾能力,并避免了HBase的性能抖动问题。
     
  2. 支持兼容MySQL 5.7版本的JSON功能,提供半结构化数据支持:很多用户会使用JSON类型存储半结构化数据以弥补关系模型的不足,相比TEXT和LOB类型,JSON类型存储半结构化数据时性能更好,支持高效索引和合法性校验。
     
  3. 支持回收站中的对象恢复,极大降低因误操作导致的潜在风险:表格删除后进入到回收站,Flashback Table能够将回收站误删除的表格恢复出来,防止误操作。
     
  4. CDC支持大事务:通过新增持久化模式,数据在同步开始前先进行本地临时存储,避免CDC传输大事务时因内存溢出OOM而导致的断开链接问题。
     
  5. 支持Kubernetes Operator:用户可以通过容器的形式将OceanBase运行在公有云或私有化部署的Kubernetes集群。
     
  6. 部署更加便捷:面向开发者提供更加友好的使用体验。将Docker镜像由2C10G优化至2C8G,降低开发者在个人电脑使用OceanBase的门槛。另外,新增了ARM架构支持。
 
注:关于上述更新的详情,可阅读本期Newsletter完整版(点击本文文末【阅读原文】可下载)

 

NoSQL

 

 
Redis发布7.0版本

 

2022年4月27日,Redis正式发布7.0版本,该版本持续开发了近1年之久,在GA版本前有3个候选版本,目前相当稳定,可以用于生产。从Itamar Haber关于版本更新的介绍中可以看出许多优秀的特性和功能来源于Redis用户的反馈和生产环境的使用经验教训,其中值得关注的更新要点有:
 
  1. Redis Functions:使用服务端的脚本来扩展Redis的新方法;
  2. ACLv2:基于键的更细粒度的访问权限管理,允许用户使用selectors管理多组命令规则;
  3. 集群:支持分片(特定节点)发布/订阅;
  4. 大多数情况下对子命令的一流的处理(影响ACL类别、info命令的统计等);
  5. Multi-Part AOF:将AOF作为多个AOF文件存储在一个文件夹中避免AOF重写带来的性能开销;可以通过配置选项appenddirname设置存放多个AOF文件的存放目录;
  6. 命令键规格:是客户端查找key参数及其读/写目的的更好方法;
  7. 集群:支持主机名,而不仅仅是IP地址;
  8. 改进了对网络缓冲区消耗的内存的管理,以及一个用于当总内存超过限制时删除客户端的配置选项maxmemory-clients;
  9. 集群:断开集群总线的连接以防止不受控制的缓冲区增涨的机制;
  10. AOF:时间戳注释和支持指定时间点的恢复,对于故障恢复非常有用;
  11. Lua:支持EVAL脚本中的函数标志;支持Verbatim和Big-Number类型的RESP3协议的回复;通过redis.REDIS_VERSION,redis.REDIS_VERSION_NUM获取Redis版本;
  12. Redis 7.0开始对RDB文件使用了新版本10格式,与旧版本不兼容,升级时需要仔细阅读,提前测试好兼容性,不可回退;
  13. 为Redis Functions和eval Lua脚本添加API以显式检查ACL;
  14. 键空间事件支持新建的key;
  15. 用listpack替换Hash、List、Zset中的ziplist,以提升性能;
  16. CLUSTER SHARDS命令弃用CLUSTER SLOTS,解锁集群管理更多技巧;
  17. CONFIG SET/GET可以在一次调用中处理多个配置;
  18. 升级jemalloc版本到5.2.1;
  19. list类型支持添加存储大于4GB的元素;
  20. 配置:repl-diskless-sync(无盘复制)现在默认设置为yes;
  21. 移除gopher协议的支持;
  22. 现在允许在数据加载期间使用CONFIG SET、REWRITE、RESETSTAT等命令,管理起来更加友好;
  23. SCRIPT LOAD和SCRIPT FLUSH不再传播到副本/AOF;
  24. 新增许多命令,如:ZMPOP、BZMPOP、LMPOP, BLMPOP、SINTERCARD、ZINTERCARD等。
 
Redis 7.0添加了近50个新命令和选项来扩展Redis的现有功能。例如,bitmap、list、set、sorted set和stream类型都添加了支持其数据管理用例的功能。此外,缓存语义已扩展为支持存在和比较修饰符。
 
Redis 7.0特别注重在内存使用率上优化和命令执行性能上的提升,对其管理的每个子系统基本上都进行了多项改进,包括内存、计算、网络和存储。虽然默认情况下启用了一些优化,但其它优化可能需要配置才可以生效。

 

NewSQL

 

 
TiDB共发布3个大版本

 

2022年1月至今,TiDB陆续发布了5.4、6.0、6.1三个大版本,在性能、兼容性、稳定性、安全性、可用性、可观测性、可管理性等方面做了大量改进,企业级HTAP与云数据库能力得到大幅增强。以上三个版本累计发布新增特性和增强功能145个,修复问题236个,其中值得关注的更新有:
 
  1. 稳定性:TiDB 6.1作为TiDB 6系版本的长期支持版(Long Term Support),在多个层面夯实产品的稳定性,例如提升TiKV高压场景下的内存稳定性,解决了由于Raft Log复制流量过大导致的OOM问题。
     
  2. 性能:TiDB 5.4版本中TiFlash存储层大幅优化行存到列存转码效率,在不同并发情况下实测吞吐性能提高60%~90%;新增索引合并查询优化,允许优化器在查询处理中同时选择使用多列的索引以减少回表。
     
  3. HTAP能力:分析引擎在MPP推出后不断走向成熟,并于4月1日在GitHub开源。6.0版本中TiFlash新增100多个常用内建函数以及若干表关联算子,引入了全新的弹性线程池,这使得TiDB MPP模式在短查询下达到同等计算资源倍增的计算性能,且在高压力查询时稳定性更佳。6.1版本中,分区表的实验特性GA,新增TiFlash MPP下的窗口函数支持。
     
  4. 可管理性:TiDB 6.0引入数据放置框架,提供了针对分区/表/库级数据在不同标签节点之间的自由放置接口,用户可以针对某张表,某个数据分区的存储位置做出自定义的选择;发布企业级集群管理组件TiUniManager,提供对TiDB集群的全生命周期可视化管理;开放了智能诊断服务PingCAP Clinic的预览,集成了诊断数据采集、智能诊断、智能巡检、云诊断平台等功能。
     
  5. 数据生态:TiDB 6.0版本中TiCDC对于增量数据的提取、排序、加载、投递等多个处理流程都进行了优化。TiDB 6.1引入了用户级别锁和TiCDC下的Avro格式向Kafka同步数据的支持。TiDB 5.4强化了数据备份效率,在支持Amazon S3、Google Cloud Storage的基础上,新增对Azure环境的支持。
 
此外,2022年5月,PingCAP宣布TiDB Cloud在全球范围正式商用,为用户提供云上全托管的DBaaS服务,支持用户在全托管的数据库上运行关键业务交易和实时分析任务,充分享受云上的性能优势和业务连续性保障。

 

相关产品

在线客服
微信联系
客服
扫码加微信(手机同号)
电话咨询
返回顶部