在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL數據庫:理解MySQL的性能優化、優化查詢

如意 ? 來源:百家號 ? 作者:程序員碼農范兒 ? 2020-07-02 17:18 ? 次閱讀

最近一直在為大家更新MySQL相關學習內容,可能有朋友不懂MySQL的重要性。在程序,語言,架構更新換代頻繁的今天,MySQL 恐怕是大家使用最多的存儲數據庫了。由于MySQL的優化范圍較廣,從軟件到硬件,從配置到應用,無法一一道來。

大量信息的存儲和查詢都會用到MySQL,因此它的優化就對系統性能提升就尤為重要了。

MySQL性能優化就是通過合理安排資源,調整系統參數使MySQL運行更快、更節省資源。MySQL性能優化包括查詢速度優化、數據庫結構優化、MySQL服務器優化等。今天,小編就和大家一起來分享下MySQL性能優化。

優化簡介

優化MySQL數據庫是數據庫管理員和數據庫開發人員的必備技能。MySQL優化,一方面是找出系統的瓶頸,提高MySQL數據庫整體的性能;另一方面需要合理的結構設計和參數調整,以提高用戶操作響應的速度;同時還要盡可能節省系統資源,以便系統可以提供更大負荷的服務。本節將為大家介紹優化的基本知識。

MySQL數據庫優化是多方面的,原則是減少系統的瓶頸,減少資源的占用,增加系統的反應速度。例如,通過優化文件系統,提高磁盤IO的讀寫速度;通過優化操作系統調度策略,提高MySQL在高負荷情況下的負載能力;優化表結構、索引、查詢語句等使查詢響應更快。

在MySQL中可以使用SHOWSTATUS語句查詢一些MySQL數據庫的性能參數。SHOW STATUS語句語法如下:

SHOW STATUS LIKE ‘value’;

其中,value是要查詢的參數值,一些常用的性能參數如下:

Connections: 連接MySQL服務器的次數。

Uptime: MySQL 服務器的上線時間。

Slow_ queries: 慢查詢的次數。

Com select: 查詢操作的次數。

Com_ insert: 插入操作的次數。

Com_ update: 更新操作的次數。

Com_ delete: 刪除操作的次數。

優化查詢

查詢是數據庫中最頻繁的操作,提高查詢速度可以有效地提高MySQL數據庫的性能。本節將為大家介紹優化查詢的方法。

分析查詢語句

通過對查詢語句的分析,可以了解查詢語句的執行情況,找出查詢語句執行的瓶頸,從而優化查詢語句。MySQL中提供了EXPLAIN語句和DESCRIBE語句,用來分析查詢語句。本小節將為大家介紹使用EXPLAIN語句和DESCRIBE語句分析查詢語句的方法。

EXPLAIN語句的基本語法如下:

EXPLAIN [ EXTENDED] SELECT select options

使用EXTENED關鍵字,EXPLAIN 語句將產生附加信息。select _options 是SELECT語句的查詢選項,包括FROM WHERE子句等。

執行該語句,可以分析EXPLAIN后面的SELECT語句的執行情況,并且能夠分析出所查詢的表的一些特征。

使用EXPLAIN語句來分析1個查詢語句,執行如下語句:

MySQL數據庫:理解MySQL的性能優化、優化查詢

下面對查詢結果進行解釋。

1、id: SELECT識別符。這是SELECT的查詢序列號。

2、select_ type: 表示SELECT語句的類型。它可以是以下幾種取值:

SIMPLE表示簡單查詢,其中不包括連接查詢和子查詢;

PRIMARY表示主查詢,或者是最外層的查詢語句;

UNION表示連接查詢的第2個或后面的查詢語句;

DEPENDENT UNION,連接查詢中的第2個或后面的SELECT語句,取決于外面的查詢;

UNION RESULT,連接查詢的結果; 。

SUBQUERY, 子查詢中的第1個SELECT語句;

DEPENDENT SUBQUERY,子查詢中的第1個SELECT,取決于外面的查詢;

DERIVED, 導出表的SELECT (FROM子句的子查詢)。

3、table: 表示查詢的表。

type: 表示表的連接類型。下面按照從最佳類型到最差類型的順序給出各種連接類型:

system

該表是僅有一-行的系統表。這是const連接類型的一個特例。

const

數據表最多只有一個匹配行,它將在查詢開始時被讀取,并在余下的查詢優化中作為常量對待。const表查詢速度很快因為它們只讀取一次。const用于使用常數值比較PRIMARYKEY或UNIQUE索引的所有部分的場合。

在下面的查詢中,tbl_ name 可用于const表:

SELECT * from tbl name WHERE primary key=1 ;

SELECT* from tbl name

WHERE primary key part1=1AND primary key_ part2=2 ;

range

只檢索給定范圍的行,使用一一個索引來選擇行。key 列顯示使用了哪個索引。key_len 包含所使用索引的最長關鍵元素。

當使用=、《、》、》=、《、《=、IS NULL、《》、BETWEEN或者IN操作符,用常量比較關鍵字列時,類型為range。

下面介紹幾種檢索指定行情況:

MySQL數據庫:理解MySQL的性能優化、優化查詢

index

該連接類型與ALL相同,除了只掃描索引樹。這通常比ALL快,因為索引文件通常比數據文件小。

ALL

對于前面的表的任意行組合,進行完整的表掃描。如果表是第一一個沒標記const的表,這樣不好,并且在其他情況下很差。通常可以增加更多的索引來避免使用ALL連接。

possible_ keys: 指出MySQL能使用哪個索引在該表中找到行。如果該列是NULL,則沒有相關的索引。在這種情況下,可以通過檢查WHERE子句看它是否引用某些列或適合索引的列來提高查詢性能。如果是這樣,可以創建適合的索引來提高查詢的性能。

key. 表示查詢實際使用到的索引,如果沒有選擇索引,該列的值是NULL要想強制MySQL使用或忽視possible_ keys 列中的索引,在查詢中使用FORCE INDEX. USE INDEX或者IGNORE INDEX.參見SELECT語法。

key_len:表示MySQL選擇的索引字段按字節計算的長度,如果鍵是NULL,則長度為NULL。注意通過key_ len 值可以確定MySQL將實際使用一個多列索引中的幾個字段。

ref: 表示使用哪個列或常數與索引一起來查詢記錄。

rows:顯示MySQL在表中進行查詢時必須檢查的行數。

Extra:表示MySQL在處理查詢時的詳細信息。

DESCRIBE語句的使用方法與EXPLAIN 語句是一樣的,并且分析結果也是一樣的。DESCRIBE語句的語法形式如下:

DESCRIBE SELECT select_ options

DESCRIBE可以縮寫成DESC。

索引對查詢速度的影響

MySQL中提高性能的一個最有效的方式就是對數據表設計合理的索引。索引提供了高效訪問數據的方法,并且加快查詢的速度,因此,索引對查詢的速度有著至關重要的影響。使用索引可以快速地定位表中的某條記錄,從而提高數據庫查詢的速度,提高數據庫的性能。

如果查詢時沒有使用索引,查詢語句將掃描表中的所有記錄。在數據量大的情況下,這樣查詢的速度會很慢。如果使用索引進行查詢,查詢語句可以根據索引快速定位到待查詢記錄,從而減少查詢的記錄數,達到提高查詢速度的目的。

MySQL數據庫:理解MySQL的性能優化、優化查詢

使用索引查詢

索引可以提高查詢的速度。但并不是使用帶有索引的字段查詢時,索引都會起作用。使用索引有幾種特殊情況,在這些情況下,有可能使用帶有索引的字段查詢時,索引并沒有起作用,下面重點介紹這幾種特殊情況:

使用LIKE關鍵字的查詢語句

使用多列索引的查詢語句

使用OR關鍵字的查詢語句

優化子查詢

MySQL從4.1版本開始支持子查詢,使用子查詢可以進行SELECT語句的嵌套查詢,即一個SELECT查詢的結果作為另一個SELECT語句的條件。子查詢可以一次性完成很多邏輯上需要多個步驟才能完成的SQL操作。子查詢雖然可以使查詢語句很靈活,但執行效率不高。

執行子查詢時,MySQL需要為內層查詢語句的查詢結果建立一個臨時表。然后外層查詢語句從臨時表中查詢記錄。查詢完畢后,再撤銷這些臨時表。因此,子查詢的速度會受到一定的影響。如果查詢的數據量比較大,這種影響就會隨之增大。

在MySQL中,可以使用連接(JOIN) 查詢來替代子查詢。連接查詢不需要建立臨時表,其速度比子查詢要快,如果查詢中使用索引的話,性能會更好。連接之所以更有效率,是因為MySQL不需要在內存中創建臨時表來完成查詢工作。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3799

    瀏覽量

    64388
  • MySQL
    +關注

    關注

    1

    文章

    809

    瀏覽量

    26565
  • 性能優化
    +關注

    關注

    0

    文章

    18

    瀏覽量

    7432
收藏 人收藏

    評論

    相關推薦

    mysql數據庫設計步驟

    mysql數據庫設計和優化
    發表于 05-13 11:00

    mysql數據庫優化方案

    MySQL千萬級大表優化解決方案
    發表于 08-19 12:18

    mysql查詢優化

    mysql查詢優化
    發表于 03-12 11:06

    MySQL優化查詢性能優化查詢優化器的局限性與提示

    MySQL優化三:查詢性能優化查詢優化器的局限性與
    發表于 06-02 06:34

    詳解MySQL查詢優化 MySQL邏輯架構分析

    說起MySQL查詢優化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理創建索引、為字段選擇合適的數據類型..... 你是否真的
    的頭像 發表于 05-28 16:43 ?4350次閱讀
    詳解<b class='flag-5'>MySQL</b>的<b class='flag-5'>查詢</b><b class='flag-5'>優化</b> <b class='flag-5'>MySQL</b>邏輯架構分析

    理解MySQL體系結構的數據庫和實例

    在面試中經常會問MySQL的體系結構,接下來詳細分析MySQL的體系結構之前先理解數據庫和實例兩個概念。
    的頭像 發表于 05-03 17:28 ?2258次閱讀

    數據庫索引使用策略及優化

    的內容完全基于上文的理論基礎,實際上一旦理解了索引背后的機制,那么選擇高性能的策略就變成了純粹的推理,并且可以理解這些策略背后的邏輯。 示例數據庫 為了討論索引策略,需要一個
    的頭像 發表于 11-02 15:13 ?1720次閱讀
    <b class='flag-5'>數據庫</b>索引使用策略及<b class='flag-5'>優化</b>

    MySQL數據庫性能優化的意義及其措施

    數據庫性能優化的常見手段有很多,比如添加索引、分庫分表、優化連接池等
    的頭像 發表于 02-03 14:12 ?1298次閱讀

    你會從哪些維度進行MySQL性能優化?1

    你會從哪些維度進行MySQL性能優化?你會怎么回答? 所謂的性能優化,一般針對的是MySQL
    的頭像 發表于 03-03 10:23 ?513次閱讀
    你會從哪些維度進行<b class='flag-5'>MySQL</b><b class='flag-5'>性能</b><b class='flag-5'>優化</b>?1

    MySQL數據庫管理與應用

    MySQL數據庫管理與應用 MySQL是一種廣泛使用的關系型數據庫管理系統,被認為是最流行和最常見的開源數據庫之一。它可以被用于多種不同的應
    的頭像 發表于 08-28 17:15 ?977次閱讀

    mysql是一個什么類型的數據庫

    MySQL是一種關系型數據庫管理系統(RDBMS),用于存儲和管理大量結構化數據。它被廣泛用于各種應用程序和網站的后端,包括電子商務平臺、社交媒體網站、金融系統等等。MySQL的特點是
    的頭像 發表于 11-16 14:43 ?1787次閱讀

    MySQL數據庫基礎知識

    的基礎知識,包括其架構、數據類型、表操作、查詢語句和數據導入導出等方面。 MySQL 數據庫架構 MyS
    的頭像 發表于 11-21 11:09 ?972次閱讀

    MySQL性能優化方法

    MySQL 性能優化是一項關鍵的任務,可以提高數據庫的運行速度和效率。以下是一些優化方法,包括具體代碼和詳細
    的頭像 發表于 11-22 09:59 ?610次閱讀

    mysql數據庫基礎命令

    MySQL是一個流行的關系型數據庫管理系統,經常用于存儲、管理和操作數據。在本文中,我們將詳細介紹MySQL的基礎命令,并提供與每個命令相關的詳細解釋。 登錄
    的頭像 發表于 12-06 10:56 ?589次閱讀

    數據庫數據恢復—Mysql數據庫表記錄丟失的數據恢復流程

    Mysql數據庫故障: Mysql數據庫表記錄丟失。 Mysql數據庫故障表現: 1、
    的頭像 發表于 12-16 11:05 ?148次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—<b class='flag-5'>Mysql</b><b class='flag-5'>數據庫</b>表記錄丟失的<b class='flag-5'>數據</b>恢復流程
    主站蜘蛛池模板: 亚洲午夜久久久| 视频在线观看免费视频| 欧美日韩色片| 91久久天天躁狠狠躁夜夜| 91大神在线视频观看| 激激婷婷综合五| 天天摸日日添狠狠添婷婷| 国产免费久久精品99久久| 性欧美精品久久久久久久| 日韩精品午夜| 国产三级在线免费| 天天操天天插天天射| 1024你懂的国产欧美日韩在| 日本卡一卡2卡3卡4精品卡无人区 日本口工福利漫画无遮挡 | 在线视频你懂得| 日本三级在线| 俄罗斯一级成人毛片| 色综合亚洲| eeuss影院www影院夜场| 色91在线| free 欧美| bt天堂在线观看| 四虎永久在线精品免费影视| 黄 色 免 费 网站在线观看| 天天干免费视频| 国产亚洲第一| 国产片一区二区三区| 久久夜夜视频| 老师你好滑下面好湿h | 亚洲免费成人| 四虎影视在线影院在线观看| 国产日本在线观看| 免费高清视频免费观看| 午夜剧场黄色| 电影一区二区三区| 爱射综合| 五月激情婷婷网| 成人在线网| 一区二区视频网| 日本精品视频| 精品在线一区二区|