回答

收藏

如何提高数据库的性能?

技术问答 技术问答 232 人阅读 | 0 人回复 | 2023-09-14

我在公司中多次设计数据库。为了提高数据库的性能,我只寻找标准化和索引。  
1 J- w/ c' D* Y/ V# C$ C, B5 f如果要求您提高数据库的性能,该数据库包含大约250个表以及一些具有数百万个记录的表,那么您将寻找什么不同的东西?  $ A; y9 e. z% k+ E, {  t# u
提前致谢。
1 S  O* q* p+ l! }* e               
* D" T$ i3 e- Q8 @! b5 @解决方案:
2 f4 |9 @  W9 u. Y                * i8 S/ a7 ]0 m' Y0 Z8 p8 b

. C6 K# Z9 s) v# ^1 E( |
) I" M+ [1 s; J4 _" V                优化逻辑设计
3 w3 d* \1 w8 f逻辑级别是关于查询和表本身的结构。首先尝试最大程度地发挥这一作用。目标是在逻辑级别上访问尽可能少的数据。- E/ g" I' m1 u+ Q
拥有最高效的SQL查询
( r7 b: k9 g% Z/ t; U  I设计支持应用程序需求的逻辑架构(例如,列的类型等)
' W9 [. n' O( F0 r1 L7 r6 s( f0 }/ B, Y设计权衡以更好地支持某些用例5 z! ~/ @) p+ Z, p( O3 n
关系约束
% @9 Z+ `# s8 ?) @( I正常化
3 p# u5 R4 T2 z8 m* d) u5 Y; k
  z6 a6 A; X8 S6 F" |8 V
优化物理设计, F; Y5 I4 q! W" g
物理级别处理非逻辑方面的考虑,例如索引的类型,表的参数等。目标是优化始终是瓶颈的IO。调整每张桌子以适应需要。小型表可以永久加载到DBMS缓存中,写率低的表可以与更新率高的表进行不同的设置,以减少磁盘空间等。根据查询的不同,可以使用不同的索引等。您可以通过物化视图等透明地对非规范化数据进行标准化处理
$ t5 t- c, W1 Q* I, R) a! s6 G( E1 |8 e7 u表参数(分配大小等)' i! M# [7 K; X/ ]$ k. j3 q
索引(组合,类型等)# E9 s' M$ Y# Z; z
系统范围的参数(缓存大小等)
8 y+ t3 d( f& I5 T% q分区
# U! @4 |; @2 Z4 s: `非规范化  R' \: E+ d7 E- K

; A3 Z" |: x( `: C2 [$ f* h首先尝试改进逻辑设计,然后再改进物理设计。(但是两者之间的界限很模糊,因此我们可以对我的分类进行争论)。
: j$ A3 c6 Q$ u- e( r* y1 \优化维护: r6 C. G6 l  z& S/ L/ B: S- D2 `
必须正确操作数据库,以保持尽可能高的效率。这包括一些可能会对性能产生影响的维护性任务,例如. @8 }' M  q% X" c
保持统计数据为最新
, N2 ?1 E0 S# d4 m" e0 i; l( X9 `7 `& i定期对关键表进行重新排序4 |6 z8 \1 Y0 t8 B- }& W
磁盘维护
' u! \6 R: I/ o3 Z8 z8 A+ M( E  B: o所有的系统内容都具有可摇动的服务器
" a5 S0 {$ s. r7 K# s
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则