(sO;] GNj:U3l0写在前面的话:51Testing软件测试网]q.NY0Z+G5E?7{ Z
51Testing软件测试网 cC5b
E],^总是在灾难发生后,才想起容灾的重要性;51Testing软件测试网#dL"W6kc!CtJ(c
51Testing软件测试网a0I%IWv X5n总是在吃过亏后,才记得曾经有人提醒过。51Testing软件测试网}#S~R[V
7Of \Gn(H0
+J3\.n])~+PV#I0
M8FL&Zi6y*r:z fB051Testing软件测试网6w&B/KzL%Rimvx核心军规51Testing软件测试网5qj_;IAt
0]]8tU H,i)P(v3ge01、不在数据库做运算51Testing软件测试网"|+d ~a'wlT
cpu计算务必移至业务层51Testing软件测试网h
} j:Mf
J
;yrV uW
FwY02、控制单表数据量51Testing软件测试网,Kg0aG'm+]%L1wsLb
int型不超过1000w,含char则不超过500w;
Z8iB3{jw0合理分表;
ML7F`1},S%aPGy0限制单库表数量在300以内;
Q@{V2h]0q/T051Testing软件测试网`uzT$L4nYz3、控制列数量
0Jh7f!M k7KK7IFWT0字段少而精,字段数建议在20以内;
}5U&sD5{051Testing软件测试网)s:FC6wZ
H8I4、平衡范式与冗余51Testing软件测试网\9M;{)x#q
\F
效率优先;51Testing软件测试网]mAt-RM,y$[
往往牺牲范式;
IU-@1_GV051Testing软件测试网sQ a t ~3d$aW5、拒绝3B51Testing软件测试网J:w!VQ!EQ
51Testing软件测试网P;gue7@q拒绝大sql语句:big sql
%r+of,Y%O}
yb0拒绝大事务:big transaction
S){sB#DPU(o e'CV0拒绝大批量:big batch
Mo#r'cHY/?Z0B6roR1B*iL l)B.s051Testing软件测试网S _T-J*?
t
Exr2IX5x*DX051Testing软件测试网/t&Pk1NuOWF
G}8zIlKYTf051Testing软件测试网u/IKn[q
51Testing软件测试网CN.HnD0m字段类军规
&TC&G-Yp wY%@+\0
.{H;}:xSK!Z_Ul5I6J06、用好数值类型
-N:?^*MT}4HK ^2R!v051Testing软件测试网/Ea3rmB:v \tinyint(1Byte)
BZF
O4}
i0smallint(2Byte)51Testing软件测试网9f S-G
KF;j#n]6G
mediumint(3Byte)
"^8f$[{a5Fw"M*N
myN0int(4Byte)51Testing软件测试网2D*n9vq x&h(b
bigint(8Byte)51Testing软件测试网9t#C3n7M6~5}Eb
bad case:int(1)/int(11)
'o+l*NLp"S9GF0`h`'@,yMjH;[U07、字符转化为数字51Testing软件测试网f}kC @}1VN q!N
51Testing软件测试网9V"TVs+N]m4K用int而不是char(15)存储ip
3No_L]051Testing软件测试网3lPHD+~G8、优先使用enum或set
,_}5w]O@ZJ#}051Testing软件测试网r7^;EX6D9u,g例如:sex
enum (‘F’, ‘M’)
K+O?$\8F@1j,|
OwF051Testing软件测试网U;H;r`I
|
;H8scY(y#f${x v1l.C0
$~3W
Q5^r3C~0al9|)CLgc8b09、避免使用NULL字段
JQ!T%e{
ER6`051Testing软件测试网&_%jB*YaNULL字段很难查询优化;51Testing软件测试网'L?*Wl*rw*u
NULL字段的索引需要额外空间;
/omfUb`8_0NULL字段的复合索引无效;
)JI+qm&}#ka}0badcase:'name'char(32)defaultnull'age'intnotnullgoodcase:'age'intnotnulldefault0
k'Z0?C&EH+E]V010、少用text/blob51Testing软件测试网t1l"b
Dd5k]
^
4|
uz.ieL'K(YX0varchar的性能会比text高很多;51Testing软件测试网6J J.x9]'y.s(j
实在避免不了blob,请拆表;
gPx-w,T08uM.uC&kC Le011、不在数据库里存图片
!wWJP\Z!\in6J5^0