失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql数据库存储引擎选择_MySQL数据库性能优化之存储引擎选择

mysql数据库存储引擎选择_MySQL数据库性能优化之存储引擎选择

时间:2021-06-30 13:23:48

相关推荐

mysql数据库存储引擎选择_MySQL数据库性能优化之存储引擎选择

的存储引擎可能是所有关系型产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系。

Eb$d8lR;Tw0由于各存储引擎功能特性差异较大,这篇主要是介绍如何来选择合适的存储引擎来应对不同的业务场景。(Ks

I&@z5]051Testing软件测试网1Wgon?L3o"W]NJ['P%Yb0

P!pv"a VTL0Wr:nz:YHsUd051Testing软件测试网:r%h?#V7{

51Testing软件测试网Yo_-R"UT:{

Q4xV3La051Testing软件测试网p.i Qy[GI~Q{

/_BK$ND051Testing软件测试网D1wx{3aa5s-a6G#X

NOjNSG^^0MyISAM51Testing软件测试网]c

C\4vq|51Testing软件测试网:q

R)?Y&gy5Q@+lgL

1、特性r e&m$NX:OH_Y0

\tz3]J

LCI0不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用"Y kK#?K"q-X0

(n6`8e?Ch0表级锁定:其锁定机制是表级索引,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能51Testing软件测试网DT0S;ihq

8OqQGb9L(~3[1Z(o0读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读#zs4p:z2G8v+\f?u0

s)tXc1g:lT*JC0只会缓存索引:MyISAM可以通过key_buffer缓存以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据]A!y8Td0

9A1JF}j02、适用场景{!Xi$Lx9A~L9x1~~6f7w051Testing软件测试网+g+asgUF

不需要事务支持(不支持)*XAq#v/ZV%|051Testing软件测试网Ly0RikK

并发相对较低(锁定机制问题)/SNDzCC8~*x0

0u}OyT0数据修改相对较少(阻塞问题)51Testing软件测试网^XRdGW\

V-@DO5Di0以读为主51Testing软件测试网AC#BLnq$A\Zx

3EbUv(CON'mU0数据一致性要求不是非常高`[i#j+y`'N*ZGD051Testing软件测试网gT,h@0S8Rz

3、最佳实践51Testing软件测试网Zy v ` n

k Y2C"m~Dp$x0尽量索引(缓存机制)k3qNb,E7],Se#J9Q051Testing软件测试网vY2Q"B]Xn7F$PE

调整读写优先级,根据实际需求确保重要操作更优先$~5Q2i~cs\P051Testing软件测试网7F:Q#uj-BK/U/A

启用延迟插入改善大批量写入性能51Testing软件测试网9eXi

]w(\%|Tq]

W` `nh#Q5j@Y0尽量顺序操作让insert数据都写入到尾部,减少阻塞I1?g#[M051Testing软件测试网f"ce4u~{d;R

分解大的操作,降低单个操作的阻塞时间51Testing软件测试网^5o]"|IlM&t3C51Testing软件测试网m,[(xp8L1s

降低并发数,某些高并发场景通过应用来进行排队机制51Testing软件测试网D+tP Tg$t51Testing软件测试网IFR?"JQ5j)NC

对于相对静态的数据,充分利用Query Cache可以极大的提高访问效率51Testing软件测试网-p2q

\6}-Y O"l51Testing软件测试网 WT.gY

rsl3l5bJ

MyISAM的Count只有在全表扫描的时候特别高效,带有其他条件的count都需要进行实际的数据访问51Testing软件测试网TdB$R!A*u5_X51Testing软件测试网/\/dc#c'|k]

InnoDB51Testing软件测试网7r F%XE9NJc-~Ru

v8E3U6lS Y8x01、特性51Testing软件测试网)nc+m'PB;Ex

~ei.i iy"k4bX |0具有较好的事务支持:支持4个事务隔离级别,支持多版本读51Testing软件测试网7w"Jh6Vr51Testing软件测试网$B\(m;W)@)Lz4j

行级锁定:通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响51Testing软件测试网.?s,R"V$X0cn-l

$iQj4FV'Awc%[$dD0读写阻塞与事务隔离级别相关51Testing软件测试网)v;af+T*U!H4J\

s51Testing软件测试网+HcE Iy

具有非常高效的缓存特性:能缓存索引,也能缓存数据gNen*?ojgYs0SF051Testing软件测试网cZav&i.vam

整个表和主键以Cluster方式存储,组成一颗平衡树51Testing软件测试网.?bq!W,b-B

&e'A7S!d-|)S{A7^/F0所有Secondary Index都会保存主键信息@,l-`0[-XV6W7u0

jF(Se

T\-e*H02、适用场景51Testing软件测试网$_Szs};d _!ph51Testing软件测试网M+b` e^kxl

需要事务支持(具有较好的事务特性)#pE1BU0[2d051Testing软件测试网u8?K8ay

O-l,\

行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成,RgRu;Q0

*Tz7LUr-F0数据更新较为频繁的场景hw!p/j2C Lh:h051Testing软件测试网3}:y_C-iP

数据一致性要求较高;LyA(GC:v1{Blp3c0

&vv8[I_Ne,F6{K

h0硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘 IOp \m4VR!C6tm051Testing软件测试网9wC(p5ooG:d

3、最佳实践51Testing软件测试网&a{r)u-S6v51Testing软件测试网dd%_8E0D!ed5AD

主键尽可能小,避免给Secondary index带来过大的空间负担!@'Mx5EB

KU(tvw,M(b051Testing软件测试网_G9?|:X4o0|:ox

避免全表扫描,因为会使用表锁%m d9M;|H J.wu@051Testing软件测试网@QwCH z D

尽可能缓存所有的索引和数据,提高响应速度e9p9p9Kxn!P$bw0

*W6a'k1ms6\0m @0在大批量小插入的时候,尽量自己控制事务而不要使用autocommit自动提交51Testing软件测试网[iD#bg51Testing软件测试网a|*zS ~W9[g~

合理设置innodb_flush_log_at_trx_commit参数值,不要过度追求安全性51Testing软件测试网4m_:Ka%Q1RSr!P

BmP'[U,}8k lh0避免主键更新,因为这会带来大量的数据移动/{p^gQd^;B)M051Testing软件测试网5H F5G0G(T

NDBClusterc8tE_g|#T!gE#J2_051Testing软件测试网!GK-K7E0R r5W8?

1、特性51Testing软件测试网S,uT#t8lB)cSI%r:A51Testing软件测试网4Z$U)q7Q4_jQ

分布式:分布式存储引擎,可以由多个NDBCluster存储引擎组成集群分别存放整体数据的一部分-z UC$}/C.oa${!a0

2O]V;RC0支持事务:和Innodb一样,支持事务:hA9jwcT

Uf0

;Hws/}t.lP:h0可与mysqld不在一台主机:可以和mysqld分开存在于独立的主机上,然后通过网络和mysqld通信交互51Testing软件测试网f*lFi/m1X51Testing软件测试网a${X,{#D!H;x8ml

内存需求量巨大:新版本索引以及被索引的数据必须存放在内存中,老版本所有数据和索引必须存在与内存中51Testing软件测试网~JB;|V"x_7I51Testing软件测试网\WgI!Z#l

2、适用场景51Testing软件测试网ND,K$T+l2~{!D\51Testing软件测试网Xm}Ig`)jm/G

具有非常高的并发需求51Testing软件测试网OP}mxM1y@\

t'y[-`R3Y'ek0对单个请求的响应并不是非常的critical51Testing软件测试网FG_t0V$J'v51Testing软件测试网%h^"S9[,H ]c9JKQ

查询简单,过滤条件较为固定,每次请求数据量较少,又不希望自己进行水平Sharding51Testing软件测试网7eL#XXFQ/?51Testing软件测试网,q3Ui9u

Of:p

3、最佳实践51Testing软件测试网:X$Xx3f5~3A R;u

&w$_ghMtpo0尽可能让查询简单,避免数据的跨节点传输HOxn1`$?P0

;_I O3KAB.Qj0尽可能满足SQL节点的计算性能,大一点的集群SQL节点会明显多余Data节点JFb8]AB051Testing软件测试网q-D1?;f

m!h

在各节点之间尽可能使用万兆网络环境互联,以减少数据在网络层传输过程中的延时C:jYeum,B!kD9p051Testing软件测试网F-ZN/^uAig9Z

注:以上三个存储引擎是目前相对主流的存储引擎,还有其他类似如:Memory,Merge,CSV,Archive等存储引擎的使用场景都相对较少,这里就不一一分析了,如果有朋友感兴趣,后面再补充吧。51Testing软件测试网uZ-k5zM4ZV~

如果觉得《mysql数据库存储引擎选择_MySQL数据库性能优化之存储引擎选择》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。