Stilly

Stilly

بېكەت باشلىقى

يازمىلىرى
ئەگەشكۈچىلىرى
ئەگەشكەنلىرى
74
32
0

MySqlنىڭ MyISAM ۋە InnoDB تىپىنىڭ پەرقى (1)

MyISAM ۋە InnoDB بولسا MySql دا كۆپ قوللىنىلدىغان 存储引擎 (ساقلاش ماتورى ) تىپى بولۇپ ، ھەر قايسىسىنىڭ ئۆزىگە تۇشلۇق  مۇھىم ئىشلىتىشچانلىقى بار . تۆۋەندە مۇشۇ ھەقتە توختىلىمىز .


1.MySql سۈكۈت ھالەتتە MyISAM نى ساقلاش ماتورى قىلىپ تاللىغان .


2.MyISAM ساقلاش تىپى 事务 (شەرتلىك ۋەزىپە ) قوللىمايدۇ ، لىكىن InnoDB تىپى 事务 قوللايدۇ .بۇ ئىككى خىل تىپنىڭ ئەڭ ماھىيەتلىك پەرقى .InnoDB نىڭ سۈكۈت ھالەتتە AUTOCOMMIT تەڭشىكى ئوچۇق بولۇپ ،ھەر بىر قېتىملىق ساندان مەشخۇلاتى بىر قېتىملىق 事务 ھالىتىدە تاماملىىنىدۇ .شۇڭا كۆپ قېتىملىق SQL جۈملىسى ئىجرا قىلغاندا سۈرئەت بەلگىلىك ئاستا بولىدۇ .شۇڭلاشقا ھەر بىر قېتىملىق 事务 نى begin ۋە commit جۈملىسى ئارىسىغا ئىلىپ ئۆلچەملىك تاماملاش تەۋسىيە قىلىنىدۇ .


3.InnoDB تىپى قۇر قۇلۇپى (行锁定) قوللايدۇ ،لىكىن MyISAM قوللىمايدۇ .MyISAM پەقەت پۈتۈن جەدۋەلنى قۇلۇپلاش (锁定整个表) نى قوللايدۇ . يەنى MyISAM تىپى ئىشلەتكەندە سانداننىڭ ئوقۇش ۋە يېزىش قۇلۇپى ئۆز ئارا بىر بىرىنى يەكلەيدۇ .دىمەكچى يېزىش ۋە ئوقۇشنى بىرلا ۋاقىتتا  قۇلۇپلىغىلى بولمايدۇ .شۇڭلاشقا MyISAM تىپى كۆپ مىقداردىكى ئۇچۇرلارنى ئىزدەش ۋە كۆپ ئۇچۇرنى توپ تەھرىرلەش قاتارلىق مەشخۇلاتلاردا روشەن ئاجىزلىقى كۆرۈلىدۇ .


4.InnoDB تىپى 外键 قوللايدۇ ،لىكىن MyISAM تىپى قوللىمايدۇ .外键 نىڭ نىمە ئىكەنلىكى توغۇرلۇق ئىزدىنىپ بېقىش سىلەرگە قالدى ،ئىنكاس ئارقىلىق پىكىرلەشسەك بولىدۇ .


5.InnoDB تىپى (主键) قىممەت ئىلىش دائىرىسى  تېخىمۇ چوڭ ،يەنى تەخمىنەن MyISAM تىپى قىممەت ئىلىش دائىرىسىنىڭ 2 ھەسسىگە باۋارەر كىلىدۇ .


6.InnoDB تىپى 全文索引 (پۈتۈن تېكىسىىتلىك ئىندۇكىسلاش) نى قوللىمايدۇ . MyISAM تىپى قوللايدۇ .

بۇ يەردىكى پۈتۈن تېكىسىىتلىك ئىندۇكىسلاش دىگىنىمىز char،varchar ۋە text قاتارلىق سانلىق مەلۇمات تىپلىرىغا نىسبەتەن سۆز كىسىپ ئىزدەشنى كۆرسىتىدۇ ،پۈتۈن تېكىسىىتلىك ئىندۇكىسلاش خەنزۇچە ۋە ئۇيغۇرچە قاتارلىق ئالاھىدە  يېزىقلارنى بىر تەرەپ قىلىشتا رولى تازا دىگەندەك كۆرىنەرلىك بولمايدۇ .


7. where شەرتى  بولمىغان  count(*) جۈملىسى ئىشلەتكەندە MyISAM تىپىنىڭ سۈرئىتى InnoDB تىپىغا قارىغاندا روشەن تىز بولىدۇ . چۈنكى MyISAM تىپىنىڭ ئىچكى قىسمىدا بىر خىل ساناق سانىغۇچ لھىيلەنگەن بولۇپ count(*) نىڭ قىممىتىنى بىراقلا شۇ سانىغۇچتىن سانايدۇ .InnoDB تىپى بولسا پۈتۈن جەدۋەلنى تولۇق سىكاننىرلاش ئارقىلىق count(*) قىممىتىنى ھىسابلايدۇ . شۇڭا InnoDB تىپىدا  count(*) جۈملىسى ئىشلەتكەندە  where شەرتى قوشۇش تەلەپ قىلىنىدۇ .


تېما مەزمۇنى توردىن رەتلەنگەن .يىتەرسىزلىكلەر بولسا تەكلىپ پىكىر بىرىشىڭلارنى قارشىى ئالىمەن . يازما كىيىنچە داۋاملىق تولۇقلىنىدۇ ....