版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2019/9/7 2019/9/72、MySQLB二查詢性能優(yōu)化1Explain如何做MySQL的性能優(yōu)化?三引四數(shù)據(jù)類型3、 策六MyISAM和InnoDB引擎使用的鎖InnoDB引擎的鎖的算法有三種1、SQL語句的執(zhí)行順序3、MySQLCPU500%十、SQL語句 1、BBTree指的是BalanceTree,也就是平衡樹。平衡樹是一顆查找樹,并且所有葉子節(jié)B+樹是基于B樹和葉子節(jié)點順序指針進行實現(xiàn),它具有B樹的平衡性,并且通在B+樹中,一個節(jié)點中的key從左到右非遞減排列,如果某個指針的左右相鄰keykeyikeyi+1nullkeykeyi于等于keyi+1。進行查找操作時,首先在根節(jié)點進行二分查找,找到一個 所在的指針,然后遞歸keydata、刪除操作會破壞平衡樹的平衡性,因此在刪除操作之后,需要對樹進行一BhO(h)=O(logdNd樹的出度為2,而B+Tree的出度一般都非常大,所以樹的樹高h很明顯B+Tree大非常多,查找的次數(shù)也就為了減少磁盤I/O操作,磁盤往往不是嚴格按需,而是每次都會預(yù)讀。預(yù)讀過程為單位交換數(shù)據(jù)。數(shù)據(jù)庫系統(tǒng)將索引的一個節(jié)點的大小設(shè)置為頁的大小,使得一次I/O就BInDB的+adataB+TreeKey其data域的值,然后以data域的值為地址相應(yīng)的數(shù)據(jù)記錄。這被稱為“非聚InnoDB:其數(shù)據(jù)文件本身就是索引文件。相比MyISAM的索引文件和數(shù)據(jù)文件是分離的,其表數(shù)據(jù)文件本身就是按B+Tree組織的一個索引結(jié)構(gòu),樹的葉節(jié)點data域保存了完整的數(shù)據(jù)記錄。這個索引的key是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文助索引,輔助索引的data域相應(yīng)記錄主鍵的值而不是地址,這也是和MyISAM不同的地方。在根據(jù)主索引搜索時,直接找到key所在的節(jié)點即可取出數(shù)據(jù);在根InnoDB引擎有一個特殊的功能叫“自適應(yīng)哈希索引”,當(dāng)某個索引值被使用的BB+TreeMATCHAGAINSTWHEREInnoDB引擎在MySQL5.6.4版本中也開始支持全文索引2.4.MyISAM引擎支持空間數(shù)據(jù)索引(R-Tree),可以用于地理數(shù)據(jù)。空間數(shù)據(jù)必須使用GIS相關(guān)的函數(shù)來數(shù)據(jù)actor_idfilm_idWHEREactor_id=1ANDfilm_id=1;1,此時每個記錄FROMBLOB、TEXTVARCHAR—些引擎(例如 MyISAM)在內(nèi)存中只緩存索引,而數(shù)據(jù)依賴于操作系統(tǒng)來緩 2、幫助服務(wù)器避免進行排序和分組,以及避免創(chuàng)建臨時表(BORDERBYGROUPBYSQLSELECTSELECT*FROM`houdunwang`WHERE`uname`LIKE走索SELECT*FROM`houdunwang`WHERE`uname`LIKE不走索EXPLAINSELECT*FROM`a`WHERE`a`="1"走索同樣也是使用了函數(shù)運 7、MySQL優(yōu)化器會對SQL語句進行優(yōu)化,如果優(yōu)化器估計使用全表掃描要比使用二查詢性能優(yōu)1ExplainMySQLSQL2、type:類型【 查詢優(yōu)化的一個重要指標(biāo)】結(jié)果值從好到壞依次是system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALLsystem:表只有一行記錄(等于系統(tǒng)表),這是const類型的特例,平時不會出constconstprimarykeyuniquewheremysql該查詢轉(zhuǎn)換為一個const;鍵或唯一索引掃描;range:只檢索給定范圍的行,使用一個索引來選擇行。key列顯示使用了那個索indexFullIndexScan,indexALLindexALL快,應(yīng)為索引文件通常比數(shù)據(jù)文件小。(index與ALL雖然都是讀全表,但index是從索引中,而ALL是從硬盤)ALL:FullTableScan3、key:使用的索引,如果為NULL,則沒有使用索引;4、 掃描的行數(shù)Explain命令詳解 1SELECT*do{LIMIT10000")以讓MySQL按照ID順序進行查詢,這可能比隨機的連接要更高效。SELECTSELECT*FROMJOINpostONtag_post.post_id=post.idWHEREtag.tag='mysql';SELECTSELECT*FROMtagWHEREtag='mysql';MySQL問題排查都有哪些2explainSQLMySQL2select*三引實現(xiàn)了四個標(biāo)準(zhǔn)的級別,默認級別是:可重復(fù)讀(REPEATABLEREAD)。在可(CONCURRENTINSERT)。2、并發(fā):MyISAMInnoDB5、恢復(fù):MyISAM后發(fā)生損壞的概率比InnoDB高很多,而且恢復(fù)的速度也更2selectcount*據(jù)類TINYINTSMALLINTMEDIUMINTINTBIGINT81624,32,64FLOATDOUBLEDECIMALCPU運算,但是不支持DECIMAl類型的計算,因此DECIMAL的計算比浮點類型需要更高的FLOAT、DOUBLEDECIMALDECIMAL(18,918位,取9位小數(shù)部分,剩下9位整數(shù)部分CHARVARCHARVARRUPDATE 時可能會使行變得比原來長,當(dāng)超出一個頁所能容納的大小時,就要執(zhí)行額外的操作。IAM會將行成不同片段,而InoDB需來行進內(nèi)在進行和檢索時,會保留VARCHAR末尾的空格,而會刪除CHAR末尾的varchar(505050,varchar(50varchar(200)o所占空間一樣,但后者在排序時會消耗內(nèi)存,因為orderbycol采用fixed_length計算col長度。MySQLDATETIMETIMESTAMP能夠保存從1001年到9999年的日期和時間,精度為秒,使用8字節(jié)的空間。默認情況下,MySQLDATETIME如“2008-01-1622:37:08ANSI和UNIX時間戳相同,保存從1970年1月1日午夜(時間)以來的秒數(shù),使用4個字節(jié),只能表示從1970年到2038年。UNIX_TIMESTAMPUNIX水平切分又稱為Sharding,它是將同一個表中的記錄拆分到多個結(jié)構(gòu)相同的表中。 XAID使用全局唯—分布式ID( 的Snowflake算法六主要涉及三個線程:binlogI/OSQLSQL線程:負責(zé)重放日志并重放其中的SQL語句七、事
2、一致性 執(zhí)行事務(wù)前后,數(shù)據(jù)庫從一個一致性狀態(tài)轉(zhuǎn)換到另一個一致性狀態(tài)3、性: 并發(fā)數(shù)據(jù)庫時,一個用戶的事物不被其他干擾,各并發(fā)事務(wù)之間4、持久性: 一個事務(wù)被提交之后。它對數(shù)據(jù)庫中數(shù)據(jù)的改變是持久的,即使數(shù)據(jù)庫 MITTED(未提交讀):最低的級別,允許尚未提交的數(shù)據(jù)變 MITTED(提交讀):允許并發(fā)事務(wù)已經(jīng)提交的數(shù)據(jù),可以臟據(jù)是被本身事務(wù)自己所修改,可以臟讀和不可重復(fù)讀,但幻讀仍有可能發(fā)生。入記錄A,此時該事務(wù)還未提交,然后另一個事務(wù)嘗試到了記錄A。不可重復(fù) :是指在一個事務(wù)內(nèi),多次讀同一數(shù)據(jù)幻讀:指同一個事務(wù)內(nèi)多次查詢返回的結(jié)果集不一樣。比如同一個事務(wù)Ann+1默認采用的REPEATABLE_READ級別Oracle默認采用 MITTED 所謂的MVCC(Multi-VersionConcurrencyControl,多版本并發(fā)控制)指的就是在使用READCOMMITTD、REPEATABLEREAD這兩種級別的事務(wù)在執(zhí)行普通的SEELCT操作時記錄的版本鏈的過程,這樣子可以使不同事務(wù)的讀-寫、寫-讀操作并發(fā)READCOMMITTD、REPEATABLEREAD這兩個級別的一個很大不同就是生成ReadViewREADCOMMITTDSELECT一個ReadView,而REPEATABLEREAD只在第一次進行普通SELECT操作前生成一個ReadView,之后的查詢操作都重復(fù)這個ReadView就好了。八、鎖MyISAMtable-levellocking度最低,MyISAMInnoDB行級鎖:L的一種鎖,只針對當(dāng)前操作的行進行加鎖。行級鎖能大大減少據(jù)庫操的其加鎖度最小并度高,但鎖的開也最大加鎖將使用表鎖2、在你增刪改查時,匹配的條件字段不帶有索引時,InnoDBselect命令時觸發(fā)讀鎖,什么時候觸發(fā)寫鎖,就是在你使用update、de
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年汽車銷售合同擔(dān)保服務(wù)模板附車輛改裝服務(wù)3篇
- 2024年短期公租房租賃合同
- 崗位職責(zé)表課程設(shè)計
- 2024幼兒園發(fā)展規(guī)劃(35篇)
- 基于機器學(xué)習(xí)的古代繪畫修復(fù)與復(fù)原技術(shù)研究
- 2024年營銷工作計劃(59篇)
- 沼氣池儲氣罐課程設(shè)計
- 線描西蘭花課程設(shè)計
- 英漢互譯系統(tǒng)的課程設(shè)計
- 物流行業(yè)運輸司機工作總結(jié)
- 托育機構(gòu)食品安全培訓(xùn)
- 2024年區(qū)域牛羊肉獨家代理銷售協(xié)議
- 2024旅行社承包經(jīng)營合同
- 地下車庫地面改造施工方案
- 成人有創(chuàng)機械通氣氣道內(nèi)吸引技術(shù)操作標(biāo)準(zhǔn)解讀
- 《護患溝通》課件
- 洗浴用品購銷合同模板
- 電能質(zhì)量-公用電網(wǎng)諧波
- 電火灶-編制說明
- 幼兒園幼小銜接方案模板
- 批評與自我批評表
評論
0/150
提交評論