大型数据库入门
本文介绍大型数据库的概念及其性能决定因素,以及如何优化性能。
- 什么是大型数据库
-没有一个标准定义
-包含非常多元组(数据库行)的数据库,或者占用非常大的物理文件系统存储空间的数据库。
-占据TB量级的磁盘存储,包含数十亿表行。 - 为什么需要大型数据库
今天企业管理的数据总量 - 大型数据库性能的决定因素
OS<DBMS<硬件<应用<架构 - 如何提高大型数据库性能
可分为以下四个步骤:
~应用层面的优化
~数据库设计与配置优化
~操作系统和硬件优化
~架构的优化
4.1 应用层面的优化
寻找常见的问题:
应用是否真正使用了它取得的数据?
应用里执行了太多的查询?(ORM、嵌套)
应用在毫无必要的时候还连上了数据库?
应用连接到数据库的次数是不是太多?
使用连接池了吗?
使用缓存了吗?
4.2 数据库设计与配置优化
设计优化(Schema和Index)
-优化设计不良或索引不佳的schema,能把性能提高几个数量级。
-Schema的优化和索引既需要大局观,又需要专注细节。
-优化通常需要权衡取舍。如为了加快查询添加索引会减慢更新的速度;非规范化的schema能加快某些类型的查询,却让其它类型查询变慢。
数据库配置优化
-包括缓存大小、I/O调优、并发数等。
-具体的配置依赖于服务器的硬件、数据量、查询类型、响应时间、事务持久性和连续性等因素。
-不要期望改变配置会带来巨大的性能提升。提升的具体大小取决于工作负载,通常可以选择适当的配置参数得到两到三倍的性能提升。
4.3 操作系统和硬件优化
最弱部分决定了性能,操作系统和硬件通常也会成为限制因素(如CPU饱和、内存不够、I/O饱和)。
可以从以下几方面进行优化:
CPU/内存/IO(RAID、网络存储)/网络/操作系统
4.4 架构的优化
When
构建大型、高性能应用程序
类型
①分散式数据库架构
其特点是业务单一、单机单业务服务、无交叉关联、简单Replication机制、依赖硬件,数据的存储和管理均由单机实现。
②集中式数据库架构
重点是放在数据库管理和存储上。特点是集群易扩展,功能多;数据存储与应用分离;数据库结构各异,业务连接和使用方式各异。
③分布式数据库架构
其特点是不仅关注存储和管理,并且把应用也注重起来,提供透明应用和策略的数据库服务; 自动扩容、节点自动分裂与合并。