升级硬件优化数据库设计优化索引优化查询

数据库性能调优是一个系统工程,不是一件容易的事情。对于集中式数据库的性能优化(有别于分布式数据库),大约可以从以下几个方面入手:

一、升级硬件

购买性能更高的服务器,或者升级机器硬件,包括CPU、内存、磁盘,以及加大带宽,提高网络传输速率。

加内存可以将更多的数据保存在缓冲区,以减少硬盘IO操作,从而提升数据库的整体性能。

磁盘子系统的性能提升体现在2个方面:
1)采用速度更快的磁盘系统,比如固态硬盘代替机械硬盘;或者采用SCSI接口硬盘
2)合理分配磁盘IO到多个设备,提高并行操作能力,比如磁盘阵列

以上就是所谓垂直扩展,集中式数据库的性能提升方式。如果是分布式数据库,则可以水平扩展,以增加服务器的数量来提升服务能力。

二、优化数据库设计

在数据库设计阶段,就可以着手考虑性能优化问题。数据库的设计优化,可以包括逻辑设计优化和物理设计优化。

1、逻辑设计优化
主要是适度反规范化。

数据库规范化程度提升,使得数据库冗余信息减少,但也引入了新的问题。由于规范化使得关系模式不断被拆解,在使用数据时需要频繁进行连接操作,而连接操作是最耗时的,是数据库性能的制约因素。因此,适度反规范化,合理增加冗余属性,可以改善系统性能。常用的措施如下:

1)增加派生列(计算列),将常用的计算属性(例如总和、最大值等)存储到数据库中

2)重新定义实体(即重新设计表),增加冗余列,以减少连接等操作

3)水平或垂直分割表,提升并行访问度

2、物理设计优化
1)属性的数据类型应该反映数据所需的最小存储空间,特别是对于建立索引的属性。比如,能够用smallint类型的,就不要用integer。这样索引可以更快被读取,而且一条记录的长度越小,每页返回的记录数量就越多,减少了IO操作,性能得以提升。

2)将一个大表分割,分别存放在不同的物理磁盘上,并发读取,减轻IO压力,提升读取速度。

3)数据库中文本或图像属性的数据存放在单独的物理设备上,原理同上。

三、优化索引策略

1、选用经常查询、且很少更新的属性建立索引。

2、使用最多索引重点进行优化

3、数据量非常小的表不必建立索引(主键除外),全表扫描更有效

4、一个表不要建立太多索引。索引过多会影响update、insert、delete性能。

四、优化查询

查询优化(SQL优化)也称为应用程序优化,是数据库优化最重要的一环。SQL优化的策略很多,如:
1、建立物化视图或尽可能减少多表查询

2、只检索需要的属性

3、用IN条件子句等价替换OR子句

4、事务晚开启,早关闭,经常commit,及早释放锁

5、非相干子查询代替相干子查询
非相干子查询在一条SQL语句中,是独立的子查询,不依赖于外部的查询,相干子查询相反。比如

1)非相干子查询

SElECT *FROM ReadersWHERE 读者编号 IN(SELECT 读者编号FROM [Borrow History])

2)相干子查询

SELECT FROM Books As aWHERE 价格 >(SELECT AVG(价格)FROM Books AS bWHERE a.类编号=b.类编号)

3)总结
非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。

相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。

故非相关子查询比相关子查询效率高。

集中式数据库性能优化相关推荐

  1. 分布式SQL学习总结(1)——蚂蚁金服资深总监韩鸿源:像使用集中式数据库一样使用OceanBase分布式数据库

    很多人对蚂蚁金服的了解还仅仅停留在支付宝,其实今天的蚂蚁金服已经逐步成长为大型的金融集团,覆盖了很多范围的业务,这些业务中不仅包括超过8.7亿实名注册用户,日活2亿多的支付宝APP,还包括服务亿级免押 ...

  2. DEV05 GBase 8a MPP Cluster 数据库性能优化

    GBase 8a MPP Cluster 数据库性能优化 一.数据库为何要优化 (一)从 DBA 角度谈数据库为何要优化 (二)数据库产品的选型: (三)从 DE(开发工程师)角度谈数据库为何要优化 ...

  3. 数据库性能优化经验总结

    1.数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件 ...

  4. 超详细:数据库性能优化(一)

    出处: https://www.cnblogs.com/easypass/archive/2010/12/ 08/1900127.html 1.数据库访问优化法则 要正确的优化SQL,我们需要快速定位 ...

  5. 历年双11实战经历者:我们是如何做数据库性能优化及运维-CloudDBA和天象

    8月24日阿里云数据库技术峰会上,阿里云高级DBA专家玄惭带来面对超大规模的数据库集群,尤其是在每年像双11这样重大促销活动中,阿里云是如何进行运维和优化的.本文主要介绍了天象和CloudDBA两个产 ...

  6. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化

    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...

  7. 数据库性能优化—全局优化思路

    一.数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里? 大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件 ...

  8. oracle使用 union all 用自增序列_值得收藏的Oracle数据库性能优化

    值得收藏的Oracle数据库性能优化 年尾了,新的一波面试军又要开始了,被问到最多的可能就是性能优化,尤其是数据库性能优化,这个面试题不管是初中高级工程师都会被问到.因此我觉得下面31点ORACLE优 ...

  9. oracle union all 特别慢_值得收藏的Oracle数据库性能优化

    前言 年尾了,新的一波面试军又要开始了,被问到最多的可能就是性能优化,尤其是数据库性能优化,这个面试题不管是初中高级工程师都会被问到.因此我觉得下面31点ORACLE优化还是值得调几个去面试.也方便以 ...

最新文章

  1. Github 树形菜单插件
  2. c#正则表达式--环视
  3. mootools脚本框架下载
  4. SAP Spartacus cypress集成测试执行失败的一些常见原因
  5. SQL入门语句之LIKE、GLOB和LIMIT
  6. 前端集成解决方案(转)
  7. [翻译]两大因素推动向上比特币价格上涨
  8. 国网英语计算机职称考试技巧,计算机职称考试通关的三大技巧
  9. 如何摆脱工具类【转载】
  10. WiFi mac地址详解
  11. 掌握这些方法论后我工资涨了一倍!
  12. 科学家量子计算机时间倒流,科学家用量子计算机让“时间倒流”?并没有真的做到...
  13. 农历阳历转换 java_Java编程实例:Java版农历和阳历转换源码
  14. 编写一个程序实现顺序栈(假设栈中元素类型为char)的各种基本运算
  15. qq家园里游戏c语言,盘点腾讯旗下5款过气游戏,全部玩过的人都该结婚了吧
  16. Python 接入飞书端口API - 实现共享空间的Excel更新
  17. YV12toI420 yuv420、NV12、YV12相互转换
  18. 比较GBDT与Xgboost、boosting与bagging
  19. 有机晶体数据库_福利干货:晶体学数据库大盘点
  20. Fly deer Technical support

热门文章

  1. strcpy 实现原理
  2. 游戏建模贴图怎么学?腾讯主美分享5种高效方法
  3. 【Android原生开发】艺术圈APP
  4. 华为畅享max有没有人脸识别_华为畅享MAX:轻奢外观下的智慧功能大揭秘
  5. Makefile-函数patsubst
  6. ClickHouse创建MySql引擎报错(Code: 501)
  7. linux操作系统测试面试题,软件测试进阶面试题之Linux基础
  8. 为什么 TCP 三次握手期间,客户端和服务端的初始化序列号要求不一样?
  9. Xshell 7 功能强大,免费享用,再也不用找破解版了
  10. P4 tutorials----Basic Tunneling