数据库技术演进之路

规范化有第一范式(1NF):确保每列都是原子的,不可再分;第二范式(2NF):消除非主属性对主键部分
首页 新闻资讯 行业资讯 数据库技术演进之路

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

图片图片

  • 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. 避免过多的索引

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

图片图片

图片图片

图片图片

图片图片


14    2024-07-17 11:40:58    数据库 技术 演进