日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产一区二区三区四区三区四 | 国产精品麻豆成人av电影艾秋 | 精品国产二区三区 | 成人av不卡 | 毛片免费一区二区三区 | 91视频直接看 | 日韩视频中文字幕 | 人妖av在线| 鬼眼| 精品国产乱子伦 | 精品嫩模一区二区三区 | 美女高潮流白浆视频 | 色偷偷伊人 | 欧美色第一页 | 五月av综合av国产av | 91视频一区二区三区 | gogo亚洲国模私拍人体 | a级免费视频 | 欧美一级欧美三级 | 人妻激情偷乱视频一区二区三区 | 国产色呦呦 | 人人澡人人射 | 国产每日更新 | 中文字幕在线观看免费高清 | 老鸭窝视频在线观看 | 久久久久亚洲av成人人电影 | 欧美在线免费视频 | 国产美女久久 | 欧美午夜理伦三级在线观看 | 日本va欧美va欧美va精品 | 丁香av | 天天色综合av | 国产a大片 | 激情欧美一区二区免费视频 | 杨幂毛片| 另类一区二区三区 | 天天干天天玩 | 国产精品无码久久久久成人app | 美女又爽又黄免费 | 日本在线视频一区二区三区 | 成人必看www.| jzzijzzij日本成熟少妇 | 人妻无码中文久久久久专区 | 雨宫琴音一区二区三区 | 91偷拍富婆spa盗摄在线 | 国产精品三级在线观看无码 | 精品国产传媒 | 精品无码一区二区三区电影桃花 | 亚洲一卡一卡 | 嫩草影院国产 | 亚洲精品中文字幕在线 | 丁香激情综合 | 91九色蝌蚪91por成人 | 日韩91| 国产一区亚洲二区三区 | 综合色综合 | 啪视频在线观看 | 午夜成人免费影院 | 蜜桃av噜噜| 激情久久五月 | 日本一区二区在线不卡 | 嫩草视频一区二区三区 | 久久久久久久久久久久久久国产 | 一级特黄bbbbb免费观看 | 蜜桃视频污在线观看 | aa在线| 特色黄色片 | 精品丰满人妻无套内射 | 欧美一级一区二区三区 | 91在线一区二区三区 | 亚洲 欧美 激情 另类 校园 | 国产小视频免费观看 | 无码精品人妻一区二区 | 天天躁日日躁狠狠躁av麻豆男男 | 黄色小视频入口 | www.日韩高清 | 精射女上司 | 精品视频在线免费观看 | 欧美黄色高清视频 | 婷婷国产一区 | 波多野结衣乳巨码无在线观看 | 亚洲区欧美 | 天堂成人在线视频 | avav亚洲| 亚洲国产欧美精品 | 日韩在线小视频 | www色中色 | 国产精品一区二区在线 | 香蕉视频免费看 | 少妇熟女一区二区三区 | 免费麻豆| 亚洲你懂得 | 涩涩av| 我和公激情中文字幕 | 欧美性猛交xxx乱大交3蜜桃 | 波多野结衣视频网址 | 免费黄色a级片 | 精品视频区 | 在线观看免费观看在线 |