专栏名称: AustinDatabases
PostgreSQL ACE ,PolarDB 3年, OceanBase 极速学习ING, MongoDB 8年经验, MySQL OCP, SQL SERVER, MCITP,REDIS ,做一个合格的数据库架构师
目录
相关文章推荐
新浪科技  ·  【#华为2024年销售收入超8600亿#】2 ... ·  22 小时前  
36氪  ·  连微商都嫌弃玛莎拉蒂了 ·  昨天  
中国能源报  ·  “国之重器”,升级换装 ·  2 天前  
中国能源报  ·  “国之重器”,升级换装 ·  2 天前  
新浪科技  ·  【“#新汽车#”开局2025:#鸿蒙智行挑战 ... ·  4 天前  
51好读  ›  专栏  ›  AustinDatabases

MySQL 内存那点事你咋就不会--问来问去 --分析+自动分析脚本(1)

AustinDatabases  · 公众号  · 科技媒体 数据库  · 2025-02-06 06:00

主要观点总结

该文章主要介绍了MySQL内存分析,包括其内存分布、缓冲池和内存使用情况,同时给出了一个Node.js脚本示例来跟踪InnoDB的内存信息。此外,文章还介绍了MySQL的数据库版本、存储引擎、内存表等概念,并探讨了MySQL与PostgreSQL、OceanBase、SQL Server等其他数据库的关系。最后,文章还提到了对数据库未来的思考,以及数据库产品的权限设计缺陷和市场营销等问题。

关键观点总结

关键观点1: MySQL内存分析

文章主要介绍了MySQL的内存分布情况,包括buffer pool和memory部分,并解释了相关参数的含义。同时给出了一个Node.js脚本示例,用于持续跟踪InnoDB的内存信息。

关键观点2: MySQL与其他数据库的关系

文章讨论了MySQL与PostgreSQL、OceanBase、SQL Server等其他数据库的关系,并指出了MySQL在数据库领域中的地位和未来发展。

关键观点3: 数据库产品的权限设计缺陷

文章指出,阿里云数据库产品在权限设计方面存在缺陷,导致在操作界面和客户服务方面出现问题,并给出了相应的解决方案。

关键观点4: 未来数据库的思考

文章最后探讨了数据库未来的发展趋势,包括数据库的权限设计、市场营销、AI化等方面,以及数据库产品的内卷现象。


正文

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2720人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6群均已爆满,7群430+,开8群9群)

一年一年的过,每天都是修炼,当理解了自己才是一切的根源,自己变了,一切都会改变,外在的一切都是相,所有的境遇都是内心的投射,明白这个道理后,不会在向外再去搜寻认可,尊重,不会奢望其他人单纯因为你而变,也不会期望别人对你的认可,求人不如求己,专注打磨自己,对其他人降低期待,因缘而和,因缘而散,保持从容的心,在沉淀中蓄力,需谨记,人心的成见如同一座座大山,我们慢慢的搬,何以畏惧。




最近一段时间,经常有人问MySQL的内存分析,内存到底用到了哪里,为什么内存持续的下降,为什么内存持续的上升。今天我们来通过此文来分析一下MySQL的内存都去哪了。

这里我们先把基准说一说,

1  我们此次的分析对象版本为8.025 MySQL的开源版本 和 PolarDB MySQL 8.02 (相当于MySQL8.018)的版本

2  此次分析我们尽力将可以使用到的方法来进行一个一网打尽。

下面我们先祭出第一个方法,最老的一个方案

show engine innodb status;

| InnoDB |      | 
=====================================
2025-01-25 21:30:49 140356048033536 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 9 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 3 srv_active, 0 srv_shutdown, 8957 srv_idle
srv_master_thread log flush and writes: 0
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 3
OS WAIT ARRAY INFO: signal count 3
RW-shared spins 0, rounds 0, OS waits 0
RW-excl spins 0, rounds 0, OS waits 0
RW-sx spins 0, rounds 0, OS waits 0
Spin rounds per wait: 0.00 RW-shared, 0.00 RW-excl, 0.00 RW-sx
------------
TRANSACTIONS
------------
Trx id counter 1549
Purge donefor trx's n:o < 1549 undo n:o < 0 state: running but idle
History list length 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 421831178706328, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 421831178705472, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 421831178704616, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
--------
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
I/O thread 3 state: waiting for completed aio requests (read thread)
I/O thread 4 state: waiting for completed aio requests (read thread)
I/O thread 5 state: waiting for completed aio requests (read thread)
I/O thread 6 state: waiting for completed aio requests (write thread)
I/O thread 7 state: waiting for completed aio requests (write thread)
I/O thread 8 state: waiting for completed aio requests (write thread)
I/O thread 9 state: waiting for completed aio requests (write thread)
Pending normal aio reads: [0, 0, 0, 0] , aio writes: [0, 0, 0, 0] ,
 ibuf aio reads:, log i/o'
s:, sync i/o's:
Pending flushes (fsync) log: 0; buffer pool: 0
1191 OS file reads, 408 OS file writes, 100 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
 insert 0, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 276707, node heap has 0 buffer(s)
Hash table size 276707, node heap has 0 buffer(s)
Hash table size 276707, node heap has 0 buffer(s)
Hash table size 276707, node heap has 1 buffer(s)
Hash table size 276707, node heap has 3 buffer(s)
Hash table size 276707, node heap has 3 buffer(s)
Hash table size 276707, node heap has 2 buffer(s)
Hash table size 276707, node heap has 4 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number          18118356
Log buffer assigned up to    18118356
Log buffer completed up to   18118356
Log written up to            18118356
Log flushed up to            18118356
Added dirty pages up to      18118356
Pages flushed up to          18118356
Last checkpoint at           18118356
103 log i/o'
done, 0.00 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 1096286208
Dictionary memory allocated 429842
Buffer pool size   65536
Free buffers       64203
Database pages     1320
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 1166, created 158, written 239
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 1320, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
----------------------
INDIVIDUAL BUFFER POOL INFO
----------------------
---BUFFER POOL 0
Buffer pool size   8192
Free buffers       7952
Database pages     239
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 231, created 8, written 15
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 239, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
---BUFFER POOL 1
Buffer pool size   8192
Free buffers       7989
Database pages     201
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 199, created 2, written 4
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 201, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
---BUFFER POOL 2
Buffer pool size   8192
Free buffers       8078
Database pages     112
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 108, created 8, written 15
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 112, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
---BUFFER POOL 3
Buffer pool size   8192
Free buffers       8144
Database pages     46
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 44, created 2, written 4
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 46, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
---BUFFER POOL 4
Buffer pool size   8192
Free buffers       8117
Database pages     74
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 73, created 1, written 10
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 74, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
---BUFFER POOL 5
Buffer pool size   8192
Free buffers       8073
Database pages     117
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 50, created 67, written 81
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 117, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
---BUFFER POOL 6
Buffer pool size   8192
Free buffers       7909
Database pages     281
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 216, created 65, written 85
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 281, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
---BUFFER POOL 7
Buffer pool size   8192
Free buffers       7941
Database pages     250
Old database pages 0
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 245, created 5, written 25
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 250, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
0 read views open inside InnoDB
Process ID=4662, Main thread ID=140354489517824 , state=sleeping
Number of rows inserted 0, updated 0, deleted 0, read 0
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
Number of system rows inserted 433, updated 324, deleted 168, read 5580
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================

内存的信息主要分布在 buffer pool and memory 这部分,首先 Total large memory allocated 1096286208 这个部分是整体的数据库被分配的内存空间 1096286208、1024/1024/1024 =  1.02G 这里总体说明物理内存分配给数据库大约1.02G的内存空间

Dictionary memory allocated 429842 其中数据字典的部分分配了 419KB

Buffer pool size   65536 实际上我们关心的innodb_buffer_pool 到底分配了多大的内存,这里 65536*16KB/1024 = 1G,这里innodb_buffer_pool 被分配了1G的内存空间。Free buffers  64203 其中 64203/65536* 100% = 97% 的innodb_buffer_pool中的页面都是空的未被利用。

那么一般情况下,我们通过这些数据的持续跟踪就可以了解到我们的内存给定的值是否合适。

举例 free buffers 持续都是0 说明我们的给的innodb_buffer_pools的配置需要增加。再如 old database page 0 的这个部分在一定时间经常突然增大,说明LUR 在大量淘汰数据页面,此时如果你没有大量的数据灌入并参与查询的操作等等,那么就有可能在告知你,你的数据库中给定共享的内存部分不足了。

Modified db pages  0

这位置的modified db page 说明到底有多少数据脏页还未刷新的磁盘中。这里我们有一个标定我们 innodb_buffer_pools 的关键的缓冲区命中率。在这里我们也可以进行计算

总页访问次数 (Buffer pool reads + Buffer pool read requests) 包括所有从缓冲池读取的页和从磁盘读取的页。

缓冲池中的读取请求 (Buffer pool read requests) 表示从内存中满足的读取请求。

从磁盘读取的次数 (Buffer pool reads) 表示因为缓冲池中未找到数据而从磁盘读取的次数。

缓冲区命中率 = (Buffer pool read requests / (Buffer pool read requests + Buffer pool reads)) * 100%

这里我们通过node.js的脚本来完成一个简单的内存信息的跟踪过程

const mysql = require('mysql2/promise');

// 配置数据库连接
const dbConfig = {
  host: 'localhost',
  user: 'root',
  password: 'your_password',
  database: 'your_database',
};

async functionanalyzeInnoDB() {
  try {
    const connection = await mysql.createConnection(dbConfig);

    console.log('Connected to database.');

    // 定时任务,每隔 10 秒执行一次
    setInterval(async () => {
      try {
        // 获取 InnoDB 状态信息
        const [rows] = await connection.query('SHOW ENGINE INNODB STATUS');
        const innodbStatus = rows[0]?.Status || '' ;
        
        // 解析缓冲池信息
        const bufferPoolSizeMatch = innodbStatus.match(/Buffer pool size\s+(\d+)/);
        const dirtyPagesMatch = innodbStatus.match(/Modified db pages\s+(\d+)/);
        const pagesReadMatch = innodbStatus.match(/Pages read\s+(\d+)/);
        const pagesWrittenMatch = innodbStatus.match(/Pages written\s+(\d+)/);
        const readRequestsMatch = innodbStatus.match(/Pages made young\s+(\d+)/);
        const diskReadsMatch = innodbStatus.match(/Pages read\s+(\d+)/);

        // 数据提取
        const bufferPoolSize = bufferPoolSizeMatch ? parseInt(bufferPoolSizeMatch[1]) : 0;
        const dirtyPages = dirtyPagesMatch ? parseInt(dirtyPagesMatch[1]) : 0;
        const pagesRead = pagesReadMatch ? parseInt(pagesReadMatch[1]) : 0;
        const pagesWritten = pagesWrittenMatch ? parseInt(pagesWrittenMatch[1]) : 0;
        const readRequests = readRequestsMatch ? parseInt(readRequestsMatch[1]) : 0;
        const diskReads = diskReadsMatch ? parseInt(diskReadsMatch[1]) : 0;

        // 计算
        const dirtyPagesMB = dirtyPages * 16 / 1024; // 每页 16KB 转换为 MB
        const hitRate = (readRequests / (readRequests + diskReads)) * 100 || 0; // 命中率 (%)
        const readWriteRate = pagesRead + pagesWritten; // 页面流速 (读+写)

        // 输出结果
        console.log(`--- InnoDB Memory Analysis ---`);
        console.log(`Buffer Pool Size: ${(bufferPoolSize * 16 / 1024).toFixed(2)} MB`);
        console.log(`Dirty Pages: ${dirtyPagesMB.toFixed(2)} MB`);
        console.log(`Hit Rate: ${hitRate.toFixed(2)}%`);
        console.log(`Page Flow Rate (Read+Write): ${readWriteRate} pages/s`);
        console.log('--------------------------------');
      } catch (error) {
        console.error('Error analyzing InnoDB:', error);
      }
    }, 10000); // 每隔 10 秒运行一次
  } catch (error) {
    console.error('Database connection failed:', error);
  }
}

// 启动脚本
analyzeInnoDB();

然后运行这个脚本,我们查看结果,这里脚本是循环的可以持续观察内存的动态。

我们可以持续观察这个MySQL内存分配和脏页以及共享内存部分的命中率的部分。这里hit rate 展示为0 是因为这个数据库服务器是新建的还未进行数据查询等工作,查看hit rate 需要运行一段的数据库的数据才准确。

(脚本目前只是针对本地机带有MySQL的主机部署,需要安装node.js程序)



置顶

2025数据库“新闻”,第四条坐实了开源PG属于谁? 开源MySQL低迷原因在哪?

公众号给我两个数字 34.6万,65.5万--告别2024

云不云的,我不晕,从今天起云专栏的喇叭开始广播了。

ETL 行业也够卷,云化ETL,ETL 软件不过了


MySQL相关文章

ORACLE 最终会把 MySQL 弄死对吗?原因是什么!  (译)
MySQL 怎么让自己更高级---从内存表说到了开发方式
MySQL timeout 参数可以让事务不完全回滚
"DBA 是个der" 吵出MySQL主键问题多种解决方案

MySQL 让你还用5.7 出事了吧,用着用着5.7崩了

MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
用MySql不是MySQL, 不用MySQL都是MySQL 横批 哼哼哈哈啊啊
MYSQL  --Austindatabases 历年文章合集

PostgreSQL 相关文章
PostgreSQL 运维的难与“难”  --上海PG大会主题记录
PostgreSQL 什么都能存,什么都能塞 --- 你能成熟一点吗?
PostgreSQL 迁移用户很简单 ---  我看你的好戏

PostgreSQL 用户胡作非为只能受着 --- 警告他

全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁

PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!

病毒攻击PostgreSQL暴力破解系统,防范加固系统方案(内附分析日志脚本)
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜

PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆

PostgreSQL 如何通过工具来分析PG 内存泄露

PostgreSQL  分组查询可以不进行全表扫描吗?速度提高上千倍?

POSTGRESQL --Austindatabaes 历年文章整理

PostgreSQL  查询语句开发写不好是必然,不是PG的锅

PostgreSQL  字符集乌龙导致数据查询排序的问题,与 MySQL 稳定 "PG不稳定"
PostgreSQL  Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)
PostgreSQL   玩PG我们是认真的,vacuum 稳定性平台我们有了
PostgreSQL DBA硬扛 垃圾 “开发”,“架构师”,滥用PG 你们滚出 !(附送定期清理连接脚本)

DBA 失职导致 PostgreSQL 日志疯涨


MongoDB 相关文章

MongoDB  大俗大雅,上来问分片真三俗 -- 4 分什么分

MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法

MongoDB 学习建模与设计思路--统计数据更新案例

MongoDB  大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用

MongoDB  大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模

MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通

MongoDB 年底活动,免费考试名额 7个公众号获得

MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)

数据库 《三体》“二向箔”  思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维

MongoDB  是外星人,水瓶座,怎么和不按套路出牌的他沟通?

17000多张MongoDB表的锅 自动分析删除表数据难题--从头到尾的处理过程(文尾有MongoDB开发规范)
MongoDB 插入更新数据慢,开发问哪的问题?附带解决方案和脚本
MongoDB 不是软柿子,想替换就替换
MongoDB  挑战传统数据库聚合查询,干不死他们的MongoDB 2023纽约 MongoDB 大会 -- 我们怎么做的新一代引擎 SBE Mongodb 7.0双擎力量(译)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB  双机热备那篇文章是  “毒”
MongoDB   会丢数据吗?在次补刀MongoDB  双机热备
MONGODB  ---- Austindatabases  历年文章合集



PolarDB 相关文章

在被厂商围剿的DBA 求生之路 --我是老油条

POLARDB  添加字段 “卡” 住---这锅Polar不背

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)

在被厂商围剿的DBA 求生之路 --我是老油条

PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)

PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火星人

PolarDB-MySQL 并行技巧与内幕--(怎么薅羊毛)

PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)

PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless

POLARDB  从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS

PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈

PolarDB 从节点Down机后,引起的主从节点强一致的争论

PolarDB serverless 真敢搞,你出圈了你知道吗!!!!

PolarDB VS PostgreSQL  "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?

临时工访谈:PolarDB  Serverless  发现“大”问题了  之 灭妖记 续集

临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一

PolarDB for PostgreSQL  有意思吗?有意思呀
PolarDB  Serverless POC测试中有没有坑与发现的疑问
临时工说:从人性的角度来分析为什么公司内MySQL 成为少数派,PolarDB 占领高处
POLARDB  到底打倒了谁  PPT 分享 (文字版)

POLARDB  -- Ausitndatabases 历年的文章集合

PolarDB for PostgreSQL  有意思吗?有意思呀

PolarDB  搞那么多复杂磁盘计费的东西,抽筋了吗?


临时工访谈系列
Oracle 文化走后,你我只值9.9元
知人者智,自知者明,琼瑶一路走好
本地存储还有活路吗? 从上周一个供应商问我的问题开始





请到「今天看啥」查看全文