日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

查询性能优化(使用 Explain 进行分析、优化数据访问、重构查询方式)、存储引擎(InnoDB/MyISAM)

發(fā)布時(shí)間:2024/10/14 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查询性能优化(使用 Explain 进行分析、优化数据访问、重构查询方式)、存储引擎(InnoDB/MyISAM) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.查詢性能優(yōu)化

1.1 使用 Explain 進(jìn)行分析

Explain 用來分析 SELECT 查詢語句,開發(fā)人員可以通過分析 Explain 結(jié)果來優(yōu)化查詢語句。

比較重要的字段有:

  • select_type : 查詢類型,有簡(jiǎn)單查詢、聯(lián)合查詢、子查詢等
  • key : 使用的索引
  • rows : 掃描的行數(shù)

1.2 優(yōu)化數(shù)據(jù)訪問

1.2.1 減少請(qǐng)求的數(shù)據(jù)量

  • 只返回必要的列:最好不要使用 SELECT * 語句。
  • 只返回必要的行:使用 LIMIT 語句來限制返回的數(shù)據(jù)。
  • 緩存重復(fù)查詢的數(shù)據(jù):使用緩存可以避免在數(shù)據(jù)庫(kù)中進(jìn)行查詢,特別在要查詢的數(shù)據(jù)經(jīng)常被重復(fù)查詢時(shí),緩存帶來的查詢性能提升將會(huì)是非常明顯的。

1.2.2 減少服務(wù)器端掃描的行數(shù)

最有效的方式是使用索引來覆蓋查詢

1.3 重構(gòu)查詢方式

1.3.1 切分大查詢

一個(gè)大查詢如果一次性執(zhí)行的話,可能一次鎖住很多數(shù)據(jù)、占滿整個(gè)事務(wù)日志、耗盡系統(tǒng)資源、阻塞很多小的但重要的查詢。

1.3.2 分解大連接查詢

將一個(gè)大連接查詢分解成對(duì)每一個(gè)表進(jìn)行一次單表查詢,然后將結(jié)果在應(yīng)用程序中進(jìn)行關(guān)聯(lián),這樣做的好處有:

  • 讓緩存更高效。對(duì)于連接查詢,如果其中一個(gè)表發(fā)生變化,那么整個(gè)查詢緩存就無法使用。而分解后的多個(gè)查詢,即使其中一個(gè)表發(fā)生變化,對(duì)其它表的查詢緩存依然可以使用。
  • 分解成多個(gè)單表查詢,這些單表查詢的緩存結(jié)果更可能被其它查詢使用到,從而減少冗余記錄的查詢。減少鎖競(jìng)爭(zhēng);
  • 在應(yīng)用層進(jìn)行連接,可以更容易對(duì)數(shù)據(jù)庫(kù)進(jìn)行拆分,從而更容易做到高性能和可伸縮。
  • 查詢本身效率也可能會(huì)有所提升。

例如下面的例子中,使用 IN() 代替連接查詢,可以讓 MySQL 按照 ID 順序進(jìn)行查詢,這可能比隨機(jī)的連接要更高效。

SELECT * FROM tab JOIN tag_post ON tag_post.tag_id=tag.id JOIN post ON tag_post.post_id=post.id WHERE tag.tag='mysql';SELECT * FROM tag WHERE tag='mysql'; SELECT * FROM tag_post WHERE tag_id=1234; SELECT * FROM post WHERE post.id IN (123,456,567,9098,8904);

2.存儲(chǔ)引擎

2.1 InnoDB

  • 是 MySQL 默認(rèn)的事務(wù)型存儲(chǔ)引擎,只有在需要它不支持的特性時(shí),才考慮使用其它存儲(chǔ)引擎。
  • 實(shí)現(xiàn)了四個(gè)標(biāo)準(zhǔn)的隔離級(jí)別,默認(rèn)級(jí)別是可重復(fù)讀(REPEATABLE READ) 。
  • 在可重復(fù)讀隔離級(jí)別下,通過多版本并發(fā)控制(MVCC) + 間隙鎖(Next-Key Locking) 防止幻影讀。
  • 主索引是聚簇索引,在索引中保存了數(shù)據(jù),從而避免直接讀取磁盤,因此對(duì)查詢性能有很大的提升。
  • 內(nèi)部做了很多優(yōu)化,包括從磁盤讀取數(shù)據(jù)時(shí)采用的可預(yù)測(cè)性讀、能夠加快讀操作并且自動(dòng)創(chuàng)建的自適應(yīng)哈希索引、能夠加速插入操作的插入緩沖區(qū)等。
  • 支持真正的在線熱備份。其它存儲(chǔ)引擎不支持在線熱備份,要獲取一致性視圖需要停止對(duì)所有表的寫入,而在讀寫混合場(chǎng)景中,停止寫入可能也意味著停止讀取。
  • 2.2?MyISAM

  • 設(shè)計(jì)簡(jiǎn)單,數(shù)據(jù)以緊密格式存儲(chǔ)。對(duì)于只讀數(shù)據(jù),或者表比較小、可以容忍修復(fù)操作,則依然可以使用它。
  • 提供了大量的特性,包括壓縮表、空間數(shù)據(jù)索引等。
  • 不支持事務(wù)。
  • 不支持行級(jí)鎖,只能對(duì)整張表加鎖,讀取時(shí)會(huì)對(duì)需要讀到的所有表加共享鎖,寫入時(shí)則對(duì)表加排它鎖。但在表有讀取操作的同時(shí),也可以往表中插入新的記錄,這被稱為并發(fā)插入(CONCURRENT INSERT) 。
  • 可以手工或者自動(dòng)執(zhí)行檢查和修復(fù)操作,但是和事務(wù)恢復(fù)以及崩潰恢復(fù)不同,可能導(dǎo)致一些數(shù)據(jù)丟失,而且修復(fù)操作是非常慢的。
  • 如果指定了 DELAY_KEY_WRITE 選項(xiàng),在每次修改執(zhí)行完成時(shí),不會(huì)立即將修改的索引數(shù)據(jù)寫入磁盤,而是會(huì)寫到內(nèi)存中的鍵緩沖區(qū),只有在清理鍵緩沖區(qū)或者關(guān)閉表的時(shí)候才會(huì)將對(duì)應(yīng)的索引塊寫入磁盤。這種方式可以極大的提升寫入性能,但是在數(shù)據(jù)庫(kù)或者主機(jī)崩潰時(shí)會(huì)造成索引損壞,需要執(zhí)行修復(fù)操作。
  • 2.3 比較

    • 事務(wù):InnoDB 是事務(wù)型的,可以使用 Commit 和 Rollback 語句。
    • 并發(fā):MyISAM 只支持表級(jí)鎖,而 InnoDB 還支持行級(jí)鎖。
    • 外鍵:InnoDB 支持外鍵。
    • 備份:InnoDB 支持在線熱備份。
    • 崩潰恢復(fù):MyISAM 崩潰后發(fā)生損壞的概率比 InnoDB 高很多,而且恢復(fù)的速度也更慢。
    • 其它特性:MyISAM 支持壓縮表和空間數(shù)據(jù)索引

    ?

    總結(jié)

    以上是生活随笔為你收集整理的查询性能优化(使用 Explain 进行分析、优化数据访问、重构查询方式)、存储引擎(InnoDB/MyISAM)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 免费伊人网 | 麻豆久久久9性大片 | 亚洲伦理精品 | 成人欧美一区 | 深夜在线 | 动漫av一区二区三区 | 91精品在线观看入口 | 久久精品网 | 极品美女一区二区三区 | 亚洲一区二区三区四区不卡 | 亚洲色图视频网站 | 双性高h1v1 | 欧美精品一区视频 | 久久久久麻豆v国产精华液好用吗 | 91九色在线视频 | 成人日韩精品 | 少女情窦初开的第4集在线观看 | 爱操在线| 国产精品自产拍在线观看 | 黄网在线观看视频 | 手机在线看永久av片免费 | 久操视频在线播放 | 国产精品51麻豆cm传媒 | 国产精品秘 | 亚洲人在线播放 | 在线观看国产免费av | 三级成人网 | 国产高清精品在线观看 | 成为性瘾网黄的yy对象后 | 熟妇大屁股一区二区三区视频 | 国产一二三在线视频 | 亚洲三级国产 | 91网视频 | 欧美日韩亚洲成人 | 性感美女被草 | 国产精品欧美一区二区三区 | 亚洲欧美在线一区二区 | √资源天堂中文在线 | 欧洲视频一区二区三区 | 日韩av在线网址 | 伊人日日夜夜 | 蜜臀av色欲a片无码精品一区 | 天天想你免费观看完整版高清电影 | 婷婷丁香激情五月 | 国产自偷| 亚洲av无码专区国产乱码不卡 | 欧美一区二区三区成人片在线 | 黄色欧美一级片 | 国产激情一区二区三区在线观看 | 中文字幕+乱码+中文字幕明步 | 中文字幕在线第一页 | 黄色av网站免费看 | av福利网| 欧美视频免费在线观看 | av天天操| 久久人人爽人人人人片 | 久久精品日 | 日韩另类在线 | 欧美色999 | 国产做爰免费观看视频 | 天天看片天天射 | 91av影视 | 国产精品刘玥久久一区 | 亚洲免费国产 | 蜜臀久久精品久久久久 | 亚洲精品乱码久久久久久自慰 | 亚洲国产视频一区 | 99re6这里只有精品 | 国产精品一区二区6 | 国产精品主播一区二区 | 欧美精品乱码久久久久久按摩 | 久久久久人妻一道无码AV | 播播成人网 | 嫩草影院国产 | 九色蝌蚪porny| 男女一级黄色 | 一本高清dvd在线播放 | 综合久久2o19 | 欧美性天天 | 欧美日韩黄色一区二区 | 非洲黑寡妇性猛交视频 | 欧美偷拍另类 | 99久久99久久免费精品蜜臀 | 亚洲av无码不卡一区二区三区 | www.-级毛片线天内射视视 | 国产天天综合 | 欧美丰满熟妇xxxxx | 一级a性色生活片久久无 | 日韩高清在线观看一区 | 超碰国产人人 | 国产一级做a爰片久久毛片男男 | mm视频在线观看 | 青青草精品在线 | 中国国产精品 | 国产精品久久久久久亚洲调教 | 日本久久影视 | 天堂av手机在线 | 欧美偷拍另类 | 欧美视频导航 |