惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
Recorded Future
Recorded Future
T
Tenable Blog
S
Securelist
C
CERT Recently Published Vulnerability Notes
T
Threatpost
S
Schneier on Security
A
Arctic Wolf
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
P
Privacy International News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Register - Security
The Register - Security
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
K
Kaspersky official blog
T
True Tiger Recordings
T
Threat Research - Cisco Blogs
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
T
The Exploit Database - CXSecurity.com
小众软件
小众软件
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tor Project blog
Spread Privacy
Spread Privacy
Malwarebytes
Malwarebytes
P
Proofpoint News Feed
F
Fox-IT International blog
F
Fortinet All Blogs
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
量子位
Latest news
Latest news
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
Project Zero
Project Zero
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
I
Intezer
博客园_首页
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Darknet – Hacking Tools, Hacker News & Cyber Security

PostgreSQL

五年过去了,结论有什么变化吗? 适配信创数据库的人的精神状态 be like postgresql 多进程改多线程 二键安装一个 postgresql 服务 通过 pg_roaringbitmap 优化标签查询的话,有没有必要做高频标签映射和结合普通复合索引? PostgreSQL + TimescaleDB 方案不按主键索引走,有什么办法吗? 看看大家现在用 pg 的最佳实践是怎么样的 用 PostgreSQL 存图片等 binary 有什么坑吗 [求助] 在哪个网址能够下载 PostgresSQL 9.3.0 版本的 Windows 二进制安装包?官方/ftp/old/binary 里没有。 [请教]pgvector 的性能问题 多笔记本离线 PostgreSQL 数据库同步问题: UUID vs 自增主键 PostgreSQL 通过分 Database 做多租户可行吗? PostgreSQL 多租户的正确姿势 Postgresql 放 K8S 里,大家目前都用的什么方案呢? 2025 年 postgresql 有什么优秀的备份解决方案 有大神研究过 pg_resetwal 的原理吗,为什么会丢 user 表的数据 按照 stackoverflow 教程执行 pg_resetwal, postgresql 的数据库被清空了 求国内高性价比的 postgresql 服务,纳米项目 请教一个关于 PostgreSQL 连接被 Server 关闭的问题 PostgreSQL 18 JSONB 增加能取代 MongoDB 吗? PostgreSql Oracle 迁移 postgreSQL ,有什么经验分享 有什么权限管理最佳实践吗 请教 PostgreSQL 和 PostGIS 使用问题 pg 的毫秒级时间戳转换 关于 PostgreSQL 中的 max_connections 和 pg_stat_activity 的疑惑 目前国内最高性价比的 postgresql 服务是? 新手,请问 postgres 怎么配置 vacuum 学习 PostgreSQL,有什么资料推荐? Apache AGE 和 Neo4j 哪个更好? 有没有像 Citus 那样方便分片的图数据库? 怎样使用 C 语言访问 PostgreSQL 集群? 小系统 数据库 mysql 和 postgresql 比对 和 wordpress 数据库技术选型 PostgreSQL 没有 on update current_timestamp 感觉好麻烦 主从同步使用的端口号可以和数据库端口号不同吗? 为什么有时 PostgreSQL 有时会表现得比较卡? 第一次使用 PostgreSQL,连建表都不会,请教点经验 Java 有没有针对 PostgreSQL 好用一点的 ORM 请教,有无简单易用的 PostgreSQL 表结构、数据的同步工具? PostgreSQL 启动失败 PostgreSQL 数据库 正常情况下指定了 locale=C 与 encoding=UTF8 (最简单) 错误迁移 pgsql 导致日志报 warning,请问如何解决? 从 Mongodb 到 PostgreSQL 的大迁移 有无 pg 的入门精进博客或者视频推荐 有什么不通过写脚本的方式,将 postgreSQL 的建表语句转换为 doris 的建表语句吗? 新的 PostgreSQL 语言插件 PL/PRQL 请教一个经典的 postgres 的 sql 怎么写 洗数据:如何将 Contact 和 ContactTag 多对多关联起来 Postgres 在中国还能起来么? PostgreSQL 17 增加增量备份的功能
用了十几年的 MySQL 了,突然发现 PostgreSQL 可能更加适合我,大家怎么看?
Rooger · 2025-12-27 · via PostgreSQL

从 13 年毕业开始就开始使用 MySQL ,当时不理解 DBA 把用户表分成了 100 张,后来在别人的一通解释下也渐渐理解了。

17 年自己开始作为主程负责一个新项目,当时因为把用户表分成 100 张还跟老板吵过架(因为当时另外一个项目的负责人本身就是个混混,还给老板一通乱说,弄的我特别郁闷,无奈自己当时的心理素质不是特别强大)。后来我也觉得 100 张表可能太多了,可能没有那么多用户,索性就只分了十张。

20 年新的项目,开始尝试使用 MongoDB ,经别人推荐,说 MongoDB 怎么适合游戏。当时觉得这东西好啊,但是在实际使用时,并不是那么美好。

24 年另外一个项目,负责人全部使用了 MongoDB ,但是用法相当暴力,也就是每次全量存储用户的数量到 MongoDB 中,感觉跟使用 MySQL 也没有什么实质性的区别。

今年负责另外一个项目时,最开始设计者将用户的 JSON 数据先进行 base64 encode ,然后异或加密存储到了 MySQL 中。因为最开始的客户端的设计是纯单机,后面加了服务器存储用户的存档而已。

新的需求是要将这个单机版本做成一个联网版本,因为我之前有将单机变成联网的成功经验(某合成游戏变成联网版本,国内流水过五亿)。

现在的存储结构没有规划过,JSON 结构下面有超过 200 个字段,活动配置占用超过了 90% 的存储以上,平均用户的存储占用在 100KB 以上。 存档中存储活动配置的原因:活动开启之后,则配置不再发生变化。

我重新设计了存储结构,使用 Protobuf 重新设计了数据存储,将活动配置数据跟游戏存档分离。活动配置单独存档在一张配置表,用户的存储中只记录对应的唯一 ID 。同时提供了接口,可能将旧的数据转换为新的 Protobuf 存储结构。

用户的数据存储中,使用 JSON 存储,存储的内容为 Protobuf 对应的 JSON 数据。用户更新数据时,提供了 FieldMask 仅修改部分数据(只前每次都是全量更新)。

当这个版本成功上线之后,我发现某些接口调用比较慢,例如在用户转换存档时,我将客户端提供的原始数据、转换之后的结果存储到了 conversion_logs 配置表(数据类型均为 JSON ),内网的虚拟机上平均耗时为 200ms 。因为最近在研究 PostgreSQL ,索性就试了一下性能对比,结果 PG 只需要 20ms 左右。最关键的是,表空间存储的占用上,PG 远低于 MySQL ,因为 PG 存储使用的类型为 JSONB 。

我尝试对比纯 TEXT 字段的记录时,PG 占用的空间也只有 MySQL 的 1/3 ,现在的数据表现就是在存储和插入速度 MySQL 远低于 PG 。更新的速度还没有完全验证。

SELECT
  table_name,
  ROUND((data_length + index_length) / 1024 / 1024, 2) AS total_mb,
  ROUND(data_length / 1024 / 1024, 2) AS data_mb,
  ROUND(index_length / 1024 / 1024, 2) AS index_mb
FROM information_schema.tables
WHERE table_schema = 'merge_island'
  AND table_name IN ('conversion_logs','game_saves','activity_saves','activity_config');
  
+-----------------+----------+---------+----------+
| TABLE_NAME      | total_mb | data_mb | index_mb |
+-----------------+----------+---------+----------+
| activity_config |   216.83 |  209.55 |     7.28 |
| activity_saves  |     0.16 |    0.16 |     0.00 |
| conversion_logs |    70.55 |   70.52 |     0.03 |
| game_saves      |     7.48 |    7.39 |     0.09 |
+-----------------+----------+---------+----------+
SELECT
  relname AS table_name,
  pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_catalog.pg_statio_user_tables
WHERE relname IN ('conversion_logs','game_saves','activity_saves','activity_config');
table_name    | total_size
-----------------+------------
 activity_config | 32 MB
 activity_saves  | 376 kB
 conversion_logs | 13 MB
 game_saves      | 1976 kB

另外把用户分为 100 张的操作在 PG 这里完全是反模式的,因为 PG 号称单表轻松过亿。另外十多年前的老设计本应该也要被淘汰了,毕竟现在都是云服务,空间存储可以轻松扩充,不用再担心这个问题。

有没有使用 PG 淘汰 MySQL 的大佬来分享一下自己的经历,一起学习哈。