博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库优化的一些方向
阅读量:7239 次
发布时间:2019-06-29

本文共 904 字,大约阅读时间需要 3 分钟。

数据库优化,sql与索引效果最明显,也是最简单的方法

而想要优化sql和索引,首先就需要知道sql的性能如何,是否有效命中索引,索引匹配行数,查询消耗时间

分析这些性能指标,借助sql分析工具是最常用的方法,使用SQLServer中的执行计划,能够看到sql每一个操作的消耗,预读行数
有时候,我们不确定哪些sql最终会造成性能影响,就可以借助SQLServer Profiler工具,通过一段时间的监听,即可收集到所有耗时的sql

sql优化的根本思路就是利用索引尽可能匹配最少的数据,获取数据时,尽可能只获取索引中包含的字段,这样就不会再去获取对应行的数据

而索引的优化,则是选对首要字段,并包含常用的字段数据

再下一步,就是数据库结构的优化

表结构上,对于要联合多个表查询的数据,可以通过冗余字段来减少行筛选

目前很多互联网公司都不使用外键,原因是外键其实就是一条索引,删除和更新外键会造成额外的性能开销

对于数据量大的表格,添加时将锁住整个表,读取时由于索引非常庞大,查询起来效率也不高

这种情况可以进行横向切割,将一个表拆分成多个表,切割可以是按数据量,也可以是时间
当然,也可以使用动态表分区,表分区并不支持动态表分区,需要程序去实现

除了横向切割之外,表还可以垂直切割,表现出来就是将字段存放到多个表中

比如一个文章表,点击量,推荐量,这些数据频繁更新,更新的时候会锁住整个行,这个时候将他们分到另外一个表中,就不影响文章表的性能了

在这一步基础上,还有硬件上去做优化

数据库的性能瓶颈很大一部分是磁盘io速度慢造成的,当修改数据,插入数据,遍历行,这些操作会频繁操作io

虽然数据库在结构上优化了对机械硬盘的读写速度,但是还是远远慢于内存中读写
将机械硬盘换成读写速度更快的SSD,将会大大提升数据库的性能
SSD的连续读写能力非常快,以我手上这块为例,连续读取速度达到了2G/S,是机械硬盘的20多倍

硬件上也没办法优化了,那只有堆机器了

分布式数据库是非常复杂的,目前我的研究也不多,就不提了

转载于:https://www.cnblogs.com/Gool/p/9489767.html

你可能感兴趣的文章
使用PYTHON解析Wireshark的PCAP文件
查看>>
BarCodeToHTML(条形码toHEML)
查看>>
VC++文件监控 ReadDirectoryChangesW
查看>>
.net开发杂记
查看>>
《自动化技术中的进给电气运动》及学科学习笔记二
查看>>
所思所想目录导航
查看>>
spring中IOC模块特性
查看>>
HTML(HyperText Markup Language)
查看>>
Q&A: What is the difference between a Cash Dispersement or a Cash WithDrawal Transaction
查看>>
多线程顺序打印
查看>>
jsp九大内置对象之session和application
查看>>
codeforces 1C(几何题)
查看>>
Java集合的Stack、Queue、Map的遍历
查看>>
鼠标点击textarea后,在光标后追加内容
查看>>
root用户密码忘记如何解决及解决过程
查看>>
drf5 版本和认证组件
查看>>
20155203 实验一《Java开发环境的熟悉》实验报告
查看>>
20155203 实验二《Java面向对象程序设计》实验报告
查看>>
Day4
查看>>
有了这个方法,画什么图形都可以
查看>>