1 简介
优化数据库,优化的是什么东西?
这里介绍的方法都旨在合理使用存储过程以增强安全性和效率;分布式数据库的全局与局部模式,以及主从复制、读写分离、分表分库等实现方式;分布式缓存的角色,强调其高速内存操作和数据一致性管理。
2 集中式数据库
使用反规范化设计,从设计时优化,以避免进行表之间的频繁连接操作。 但是造成了重复存储,浪费磁盘空间。
- 设计方式
增加几余列:
是指在多个表中具有相同的列,它常用来在查询时避免连接操作。
增加派生列:
指增加的列可以通过表中其他数据计算生成。
它的作用是在查询时减少计算量,从而加快查询速度。
重新组表:
指如果许多用户需要查看两个表连接出来的结果数据
则把这两个表重新组成一个表来减少连接而提高性能。
水平分表:
按记录进行分割,把数据放到多个独立的表中,
主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。
垂直分表:
对表进行分割,将主键与部分列放到一个表中
主键与其它列放到另一个表中,在查询时减少 1/0 次数
- 保证数据一致性
使用触发器保证数据联动更新。
使用事务保证机制,适用于单体数据库。
应用层面的保证机制。 适用于异构数据库。同时需要兼顾分布式事务机制去保证ACID原则。
使用批处理脚本保证数据一致性。
3 合理使用存储过程
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效。
用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程是数据库所提供的一种数据库对象,通过存储过程定 义一段代码,提供给应用程序调用来执行。
从安全性的角度考虑,更新数据时,通过提供存储过程让第三方调用,将需要更新的数据传入存储过程。
而在存储过程内部用代码分别对需要的多个表进行更新,从而避免了向第三方提供系统的表结构,保证了系统的数据安全。
4 分布式数据库
在分布式数据库中,局部数据库管理系统中的内模式与概念模式与集中数据库是完全一致的。
不同之处在于新增的全局数据库管理系统,而整个全局数据库管理系统,可以看作是相对于局部概念模式的外模式。
由于外模式部分有一系列的分布模式、分片模式、全局概念模式和全局外模式,以及多级映射使得用户在使用分布式数据库时,可以使用集中式数据库同样的方式。
(1)全局外模式。全局外模式是全局应用的用户视图,是全局概念模式的子集,该层直接与用户(或应用程序)交互。
(2)全局概念模式。全局概念模式定义分布式数据库中数据的整体逻辑结构,数据就如同根本没有分布一样,可用传统的集中式数据库中所采用的方法进行定义。
(3)分片模式。在某些情况下,需要将一个关系模式分解成为几个数据片,分片模式正是用于完成此项工作的。
(4)分布模式。分布式数据库的本质特性就是数据分布在不同的物理位置。分布模式的主要职责是定义数据片段(即分片模式的处理结果)的存放节点。
(5)局部概念模式。局部概念模式是局部数据库的概念模式。
(6)局部内模式。局部内模式是局部数据库的内模式。
简单概括为:
主从复制
读写分离
分表分库
5 分布式缓存
是基于内存的数据库,在执行任何操作时,一般没有磁盘的低速操作,所以性能很快。
数据操作只有一个线程,保证各事务的原子性和一致性。
用作缓存组件时,其基于内存的读写特性,比基于磁盘读写的数据库性能要高很多,适合缓存高频热点的数据,来提高读性能。这样可以降低对数据库服务器的查询请求,提高系统性能
由于存在“一份数据存放了多个位置”,所以要考虑数据的一致性问题。
读写数据的基本步骤为:
读数据
根据key读缓存读取成功则直接返回: 若key不在缓存中时,根据key 读数据库 ; 读取成功后,写缓存 成功返回。
写数据
根据key值写数据库; 成功后更新缓存key值; 成功返回
6 小结
我们知道大致的三大类别后,若有兴趣可以继续深入研究,比如缓存的数据类型,过期策略,持久化的不同方式对性能和数据安全的影响。