数据库技术演进之路

数据库 其他数据库
规范化有第一范式(1NF):确保每列都是原子的,不可再分;第二范式(2NF):消除非主属性对主键部分依赖,确保每列都依赖于整个主键;第三范式(3NF):消除传递依赖,确保每列都直接依赖于主键。

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

  • SQL解析:拦截和解析应用程序的SQL语句,确定目标数据源和分片规则。
  • 路由:根据分片策略(如范围分片、哈希分片等),将SQL语句路由到相应的数据节点。
  • 执行引擎:将路由后的SQL语句分发到各个分片进行并行执行。
  • 结果合并:对各个分片的执行结果进行合并、排序、聚合等操作,返回给应用程序。

图片图片

图片图片

图片图片

图片图片

图片图片

  • 索引:缺乏适当的索引或索引设计不当会导致全表扫描,增加查询时间。
  • 查询设计:复杂的查询、子查询、多表连接等可能会影响性能。
  • 表设计:表的规范化程度、数据冗余、表的大小等都可能影响性能。
  • 硬件资源:CPU、内存、磁盘I/O等硬件资源不足会导致性能瓶颈。
  • 并发量:高并发访问会导致资源竞争和锁等待。
  • 网络延迟:网络传输速度慢也会影响查询性能。

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片

1.规范化和反规范化

  • 规范化:减少数据冗余,确保数据一致性。
  • 反规范化:在查询性能优先时,适当引入冗余来减少连接操作。

2.索引设计

  • 创建适当的索引,尤其是主键、外键和常用查询字段的索引。
  • 使用复合索引提高多列查询的效率。

3.表结构优化

  • 选择合适的数据类型,避免过大或不必要的精度。
  • 分区表设计,适用于大数据量的表,按日期、地域等维度分区。

4.关系设计

  • 清晰定义外键和参照完整性,确保数据关系的正确性。
  • 考虑表的分区、合并等操作,优化存储和查询性能。

5.事务管理

  • 设计良好的事务管理,确保数据一致性和并发性。
  • 避免长事务,减少锁竞争。

6.数据库配置

  • 调整数据库参数,如缓存大小、连接池设置等,优化数据库性能。

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

1. 规范化

  • 第一范式(1NF):确保每列都是原子的,不可再分。
  • 第二范式(2NF):消除非主属性对主键部分依赖,确保每列都依赖于整个主键。
  • 第三范式(3NF):消除传递依赖,确保每列都直接依赖于主键。

2. 反规范化

  • 在某些情况下,为提高查询性能,可以适当反规范化,加入冗余数据,减少复杂查询和连接操作。

3. 适当使用外键

  • 外键可以确保数据完整性,但在高并发写操作中可能影响性能,需权衡使用。

4. 分区和分表

  • 对于大表,根据业务需求按时间、地域等维度进行分区或分表,提升查询效率和管理方便性。

5. 使用视图和物化视图

  • 视图可以简化复杂查询,物化视图存储查询结果,提升查询性能。

6. 优化字段类型

  • 根据数据特点选择合适的数据类型,尽量使用定长字段,减少存储空间和 I/O 操作。

7. 预计算和缓存

  • 对频繁使用的复杂计算结果进行预计算或缓存,减少实时计算开销。

8. 设计高效的主键

  • 使用自增主键或 UUID 作为主键,确保唯一性和检索效率。


图片图片

图片图片

图片图片

图片图片

1. 选择合适的索引类型

  • 单列索引:针对单个字段创建索引。
  • 复合索引:对多个字段联合创建索引,适用于多列查询。

2. 使用覆盖索引

  • 设计索引时,包含查询中需要的所有字段,减少回表操作。

3. 避免冗余索引

  • 避免对相同字段或字段组合创建多个索引,以节省存储和维护成本。

4. 适当使用唯一索引

  • 对唯一值的列(如身份证号、邮箱等)使用唯一索引,提高查询效率和数据完整性。

5. 考虑查询模式

  • 分析常见查询语句,针对频繁使用的查询条件和排序条件创建索引。

6. 优化索引的选择性

  • 选择性高的列(即不同值多的列)更适合作为索引字段,过滤效果更好。

7. 维护和重建索引

  • 定期维护索引,重建碎片化严重的索引,保持索引高效。

8. 避免过多的索引

  • 每张表索引数量不宜过多,以免增加插入、更新和删除操作的开销。

图片图片

图片图片

图片图片

图片图片


责任编辑:武晓燕 来源: 二进制跳动
相关推荐

2018-04-03 12:14:39

数据库产品演讲

2019-01-15 18:03:54

数据库运维 技术

2023-01-16 14:56:00

Graph图数据库

2023-12-01 17:42:10

2015-08-17 13:49:59

数据中心二层封装技术

2023-12-01 17:46:31

数据库技术

2017-12-07 15:07:28

阿里巴巴数据库技术架构演进

2014-01-15 09:09:56

2011-03-11 12:51:48

国产数据库安全

2022-09-30 15:28:05

BERT语言模型自然语言

2021-09-16 16:15:14

Linux设备虚拟化机器模拟器

2023-07-02 11:14:21

工具TypeScript框架

2021-08-03 07:21:14

架构微服务开发

2021-01-04 13:50:31

BI商业智能永洪科技

2018-12-13 11:00:44

阿里数据库弹性

2011-05-24 10:46:21

国产数据库安全

2019-01-16 14:20:42

2015-05-04 14:17:16

数据库架构高可用

2010-10-28 15:37:36

高可用架构

2020-09-07 15:33:03

腾讯云
点赞
收藏

51CTO技术栈公众号