体验一把PolarDB单机版

PolarDB单机版:基于PostgreSQL的优化与兼容性分析,

昨天实验室里装了一套PolarDB单机版,这个版本相当于是线上的PolarDB-O的简化版,是基于PostgreSQL 11的。数据库启动以后可以看到进程结构和PostgreSQL十分类似:

每个进程前面的Postgres前缀都没有去掉。不过我们还是看出了PolarDB与原生态的PG的些许不同之处,那就是多了Polar Parallel Bgwriter的存在。PostgreSQL的脏块刷新机制一直是一个性能痛点,Backend承担了脏块刷新的部分职责,使得在高并发下,还是会有很多脏块是由Backend负责写入文件的,这会影响前台应用的性能。究其原因是因为PG的脏块刷新由多个组件负责,BGWRITER、CHECKPOINTER和Backend都可以刷脏块。PolarDB可能是看到了这个痛点,于是增加了一组自己的并行bgwriter进程,用于脏块的刷入。实际效果上看,还是不错的。

从这张非Backend脏块写入占比来看,大多数情况下,Backend不需要写入脏块。我们再来看看BGWriter写入脏块比例的情况。

昨天下班前我做了一次系统压测,可以看出,在压测的高峰期,BGWRITER的脏块写入比例还是不高,大约在60%多,不过大多数情况下,BGWRITER的脏块写入比例都接近100%,说明PolarDB的这个改进还是有效的。

从Checkpointer写入脏块的比例来看,除了某些特殊情况,Checkpointer几乎不用怎么写入脏块数据了。

从一个普通的PG数据库看,BGWriter写入的脏块比例并不高。

相比之下,这个来自于PolarDB的数据就好看多了。

接入D-SMART后我们就可以仔细端详一下PolarDB了,从版本信息可以看出,PolarDB基于PostgreSQL的11.9.18.从发行版本信息中可以看出,该版本是兼容Oracle数据库的,这和PolarDB-O的宣传是一致的,据说与Oracle的语法保持了90%以上的兼容性。

如果说起Oracle的兼容性,我们首先想到的就是dual, 于是我执行了一个select sysdate from dual;果然是可以执行的,同时,与PG兼容的selecte sysdate;命令也可以同样执行。这是一个很不错的特性,今后应用迁移可能会比较方便。

rowid, rownum也是支持的。Dba_tables/dba_indexes等视图也同样存在,只是字段与Oracle之间不太兼容,少了很多。只是简单的把PG的元数据做了一个翻译而已。

我想随着产品的发展,者方能的兼容问题是不难解决的。

从参数上看,PolarDB比普通的PostgreSQL多了很多Polar开头的参数,我想今后PolarDB的主要参数都会使用Polar开头的参数了。刚刚开始使用,手头也没有可参考的手册,暂时就不去猜测这些参数的含义了,等以后再慢慢的去体验吧。

因为PolarDB和PG的高度兼容,因此D-SMART的初步适配十分简单,只要把PolarDB定义为一个PG数据库,就可以看到系统的健康状态了。

PG的诊断工具也大体可用,不过部分工具还存在一些报错或者数据不准确的情况,看上去PolarDB还是有一些和PG不同的地方。

最后我们来看看性能,通过BenchMark 5.0,我们可用看到刚开始时候TPMC大约为54万,逐渐降低到40多万,最后稳定在40万多点的地方。这个性能基线和PG 11大致相当。我们使用的存储时nvme ssd,从存储层面上看,IO性能尚佳。

PolarDB单机版并没有PolarFS加持,因此也无法体验到读写分离、高客户切换等高级功能,不过基本上可以当成一个单机的PG数据库来使用。不管如何,PG家族又多了一个新的伙伴,总是令人高兴的事情,愿PolarDB一帆风顺。

### PolarDB for MySQL 安装指南与教程 PolarDB for MySQL 是阿里云推出的一款高性能云数据库,兼容 MySQL 的全面特性,并在性能和可扩展性上进行了优化。以下是关于 PolarDB for MySQL 的安装流程及相关信息: #### 1. 安装准备 在开始安装 PolarDB for MySQL 之前,需要确保完成以下准备工作[^1]: - 确保已注册并登录阿里云账号。 - 创建一个阿里云资源实例(如 ECS 实例),用于承载数据库服务。 - 配置网络环境:确保 VPC 和安全组规则允许数据库的访问。 #### 2. 创建 PolarDB for MySQL 实例 通过阿里云控制台创建 PolarDB for MySQL 实例的具体步骤如下: - 登录阿里云管理控制台。 - 在“产品与服务”中选择“数据库”->“PolarDB”,进入 PolarDB 控制台。 - 点击“创建实例”,选择合适的配置(如地域、可用区、规格、存储等)。 - 配置网络类型(VPC 或经典网络),并设置访问白名单。 #### 3. 初始化配置 创建完成后,需要对实例进行初始化配置[^1]: - 设置数据库管理员密码。 - 创建数据库和用户权限。 - 配置参数组以优化性能。 #### 4. 连接 PolarDB for MySQL PolarDB for MySQL 支持多种连接方式[^3]: - 使用 MySQL 客户端命令行工具连接: ```bash mysql -h <endpoint> -u <username> -p<password> -P <port> ``` - 使用第三方客户端(如 Navicat、DBeaver)连接。 - 编写程序代码连接数据库,例如使用 Python 的 `pymysql` 库: ```python import pymysql connection = pymysql.connect( host='<endpoint>', user='<username>', password='<password>', database='testdb', port=<port> ) try: with connection.cursor() as cursor: sql = "SELECT VERSION()" cursor.execute(sql) result = cursor.fetchone() print(f"Database version: {result[0]}") finally: connection.close() ``` #### 5. 注意事项 - 在操作过程中需严格遵循顺序,避免因漏操作导致部署失败[^4]。 - PolarDB for MySQL 高度兼容 MySQL 的语法和生态,开发者只需切换数据库连接路径中的 IP 地址及端口即可完成迁移。 #### 6. 数据同步与迁移 如果需要将数据从其他数据库迁移到 PolarDB for MySQL,可以参考 TapData 提供的高效同步教程[^2]。例如,从 PolarDB MySQL 版到 RDS MySQL 的数据同步流程。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值