TXSQL(TencentDB for MySQL) 8.0特性介绍

2020-03-30 13:40:33 浏览数 (1)

概述


随着MySQL-8.0新版本不断的迭代推出,修复老版本的缺陷,其稳定性逐渐得到保障。腾讯云在此趋势下,推出具有自身功能特性的MySQL数据库产品TXSQL-8.0。在性能上以及在功能上,既集成了前序TXSQL的特点,又在此基础上进行了大幅度提高。以下,我们将重点介绍一下其中的一些亮点功能。

列存引擎CSTORE

InnoDB提供的是OLTP服务的存储引擎,适用于事务密集型的业务场景。对于分析型OLAP的业务场景,InnoDB就无法胜任。为了向TXSQL的用户提供全面的服务层次,借用MySQL成熟生态圈的已有技术。如下图,在MySQL已有架构下,提供列存储引擎(CSTORE)。

通过CSTORE,用户可以完成大型数据的查询与分析,可以适用于历史存档数据、日志数据、大数据、更新不频繁的OLTP数据和数据仓库和分析处理,数据处理量达到PB级别。 在性能方面,通过高压缩比、快速加载、针对性的查询优化这些技术实现,向用户提供高效的服务,从而达到单节点可支持百亿行记录的秒级查询。TXSQL的列存储可以达到10比1的压缩比,通过减少磁盘空间的使用,实现大批量数据的秒级写入和读取。在已有MySQL查询优化的基础上,利用多种形式的稀疏索引过滤数据实现高速的数据过滤于选择。并利用多列并行处理的方式,高速完成数据的加载与处理。

非易失存储优化

Intel推出一种新的3D XPoint固态存储介质,该存储介质提供超越普通SSD的存储速度,根据如下Intel提供性能指标,最高读取速度是8.3G每秒,写入为3GB每秒

众所周知,InnoDB存储引擎的文件写主要是以页面为单位进行的,也就是在默认的模式下,每次将以16KB为单位进行读取和写入,在这一点上就可以极大的利用该存储系统的特性。

TXSQL针对性的改造了文件读写接口,以适应该存储介质的特性,提供了该模式下的性能改进,如下测试结果,可以看出改进后的TXSQL在各个方面所达到的性能提升。

数据库审计功能

审计功能是数据库安全服务的必备特性之一,通过提供提供旁路模式,实时记录用户访问数据库行为,通过实时审计信息形成不同维度的审计报告,对风险行为和攻击行为进行实时告警。所有企业级数据库,必须向用户提供该项功能,保障数据库用户的数据安全的选项。TXSQL通过数据库插件方式,根据用户的需求,提供全面,精准和高效的审计功能。 全面,可对所有数据库访问进行记录,最大程度保留用户使用数据库的操作信息,以满足用户最苛刻的审计需求,如追溯对应用者的身份和行为,并提供海量数据存储,根据用户要求提供长期备份。

精准,用户可通过设置审计规则,在数据库实际运行中,保留用户关心的用户行为,提供最为核心的审计信息。

高效,提供用户、IP、客户端工具、访问时间、操作对象、SQL 操作类型、成功与否、访问时长、影响行数等多种检索条 件的快速分析与检索,30多亿级数据6 - 8秒内响应。

数据库加密功能

在TXSQL中,我们沿用MySQL的透明加密体系,提供 KEYRING插件的另外一种实现:KEYRING_KMS。将KEYRING与腾讯云企业级的秘钥管理服务KMS(Key Management Service) 集成。

KMS是腾讯云一项保护数据及密钥安全的密钥服务。服务涉及的各个流程均采用高安全性协议通信,保证服务高安全;提供分布式集群管理和热备份,保证服务高可靠和高可用。KMS也采用的是两层密钥体系。KMS涉及两类密钥,即用户主密钥(CMK)与数据密钥(Datakey)。用户主密钥用于加密数据密钥或密码、证书、配置文件等小包数据(最多 4KB)。数据密钥用于加密业务数据。海量的业务数据在存储或通信过程中使用数据密钥以对称加密的方式加密,而数据密钥又通过用户主密钥采用非对称加密方式加密保护。通过两层密钥体系,确保数据在在内存和文件中都进行加密。

TXSQL通过密钥管理服务提供安全的密钥管理模式,如下图展示,如何完成密钥的管理,生成和获取。

异步删除大表功能

在日常运维过程中,当删除一个大表时(如一个20G的ibd文件的大表),在删除这个大文件的过程中,文件系统IO达到峰值,持续好几秒,这样会导致文件系统无法响应其他数据库实例的IO请求,对上层应用表现为数据库无法响应。在有些业务中,如果有好几秒数据库没有响应,就是很严重的事故。为了让删除大文件的IO更平滑,运维人员总结出一系列的操作,以降低系统级不可用的风险。但这这些做法缺少统一的模式,以及操作上的不确定性。 TXSQL在内核实现了异步删除表的功能,通过自动化的方式,减少人为操作中可能犯的错误。其通过分离数据文件,将原有的数据文件脱离MySQL系统,并建立后台任务,将文件的删除转化为文件的逐步回收,当数据文件进入低风险大小后,完成最后的删除动作。这种分散的操作,极大的分摊的系统开销,提供系统的可用度。

对于用户来说,可以通过简单的开关模式,动态开启或者关闭该功能,就可以使 用TXSQL提供的该项功能,极大的避免起停服务,导致对业务的影响。

semi-sync强一致性

原生semi-sync存在着以下问题,semi-sync在时间超过rpl_semi_sync_master_timeout会退化为异步;采用select进行监听,当句柄值大于1024时则会出现异常;在after commit后等待ACK容易出现幻读的问题;以上问题的出现,将会影响高可用的一致性,在主从切换时无法确保用户数据的完整。

为了解决上面的问题并对强同步进行优化及显示状态信息,TXSQL做了相应的调整。在半同步基础上实现强同步,在同步的过程中,一直保持读取状态,直到收到ack信息后,确认数据完成同步;修改同步方式时,唤醒正在等待的用户线程,继续等待或者退出;增加一些状态,用于展示当前等待的情况(正在等待的binlog位点,已等待时间),提供准确的运维信息,增加运维人员的线上处理所能获取的信息,为更精准的判断同步状态提供支持手段。

线程池

Mysql默认的处理连接的方式是One-Connection-Per-Thread,即对于每一个数据库连接,Mysql服务器都会创建一个独立的线程服务,请求结束后,销毁线程;再来一个连接请求,则再创建一个连接,结束后再进行销毁。该模式相较于最早期的进程服务模式有了极大的效率提升,但在互联网高并发的业务场景下,该模式显示除了极大的问题。在高并发模式下,会创建大量的线程,这些线程会不停的争用CPU资源,并将大量的CPU资源消耗在线程上下文的切换中。并且,在互联网业务中,连接不一定会长期保持,高并发下会出现线程频繁的创建和销毁,这些额外的操作都大量的消耗CPU,做了无用功。

TXSQL针对这些问题改进了线程服务模型,才分了连接和服务的概念,创建线程池,当客户端发起请求后,由空闲的线程对该请求进行处理,从而减少线程运行时切换消耗和创建销毁的消耗。如下图所展示,可以了解线程池的架构模型,以及在高并发下,线程池所带来的性能优势。

复制限速

在MySQL 的主从之间,一般原生的是通过获取node来访问主从复制,但这样就会有一个问题,就是在主从之间(也就是 master 和 slave之间)新建了一个实例,如果中断时间比较长,而你的网络刚开始恢复的时候,它会瞬间把你主从之间的带宽给打满,这可能会影响到其他一些正常的业务逻辑。为了避免类似这样的问题,TxSQL提供了一个限速插件。这个插件在主从同步的时候,可以设置阈值。因此即便在这种情况下,也可以保证为业务应用预留一定的带宽。

在实现上,TXSQL采用对线上业务影响最小的slave端限速的方案。该方案下,只需原地升级slave,不会影响线上服务,在确保不停服务的前提下,这个方案更容易被业务方接受。实际的限流算法采用了经典的流量管控算法,令牌桶的模式,该算法更适于流量不稳定的网络模式,让流量更平滑,这种不稳定的处理方式对于TXSQL所面临的复杂应用场景有更好的应用,避免了前面所描述的可能的突发流量导致服务器的可用性降低。

以上主要介绍了一些TXSQL8.0的亮点特性,相信在产品正式上线后,会给大家带来更多的惊喜。


腾讯数据库技术团队对内支持QQ空间、微信红包、腾讯广告、腾讯音乐、腾讯新闻等公司自研业务,对外在腾讯云上依托于CBS CFS的底座,支持TencentDB相关产品,如CynosDB、CDB、CTSDB、MongoDB、CES等。腾讯数据库技术团队专注于持续优化数据库内核和架构能力,提升数据库性能和稳定性,为腾讯自研业务和腾讯云客户提供“省心、放心”的数据库服务。此公众号旨在和广大数据库技术爱好者一起推广和分享数据库领域专业知识,希望对大家有所帮助。

0 人点赞