数据库分区、规范化及数值精度问题解析
1. 数据库分片实践
WordPress.com在发展初期,将所有博客客户的数据存于单个数据库。起初,单博客内容量不大,单数据库便于管理。然而,随着业务规模剧增,如今需在300台数据库服务器上托管700万个博客,每台服务器承载部分客户数据。
当新增服务器时,从单数据库中分离单个客户博客数据变得困难。因此,采用为每个客户分配独立数据库的方式,便于将单个博客在不同服务器间迁移。同时,客户数量变化以及博客活跃度差异,使得在多服务器间平衡负载的工作尤为重要。而且,备份和恢复中等规模的单个数据库,比处理包含数TB数据的单数据库更容易。
2. 数据库性能优化方案
当表过大时,可采用以下方法提升性能:
- 水平分区 :
- 操作步骤:
- 定义逻辑表并制定规则将行分离到各个分区,数据库会处理后续事宜。
- 以MySQL 5.1为例,可在 CREATE TABLE 语句中指定分区。
- 示例代码:
CREATE TABLE Bugs (
bug_id SERIAL PRIMARY KEY,
-- other columns
date_reported DATE
) PARTITION BY HASH ( YEAR(date_reported) )
PARTITIONS 4;
- 优势:
- 即使`date_reported`列的值更新,行也不会被错误放置在拆分表
超级会员免费看
订阅专栏 解锁全文
1931

被折叠的 条评论
为什么被折叠?



