数据库性能优化与数值精度处理
1. 大表性能优化方法
当表变得过大时,手动拆分表并非最佳选择,可采用以下几种更好的方法来提升性能:
- 水平分区 :通过水平分区或分片功能,可在避免手动拆表弊端的同时获得拆分大表的好处。可以定义一个逻辑表,并制定规则将行分隔到各个分区,数据库会处理其余操作。物理上,表被拆分,但仍可像操作完整表一样执行 SQL 语句。例如,在 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 列的年份分隔行,相比手动拆表,即使 date_reported 列的值更新,行也不会被放入错误的拆分表,且可直接对 Bugs 表运行查询,无需引用各个拆分表。不过,分区未在 SQL 标准中定义,各数据库品牌以非标准方式实现,术语、语法和特定功能有所不同,但主要数据库品牌都支持某种形式的分区。
- 垂直分区 :与水平分区按行拆分表不同,垂直分区按列拆分表。当某些列体积大或很少使用时,按列拆分表有优势。例如, BLOB
超级会员免费看
订阅专栏 解锁全文
839

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



