国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql筆記:11. 性能優(yōu)化

這篇具有很好參考價(jià)值的文章主要介紹了mysql筆記:11. 性能優(yōu)化。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


性能優(yōu)化是通過合理安排資源,調(diào)整系統(tǒng)參數(shù)使MySQL運(yùn)行更快、更節(jié)省資源。主要包括查詢速度優(yōu)化、更新速度優(yōu)化、MySQL服務(wù)器優(yōu)化等。

概覽

MySQL數(shù)據(jù)庫優(yōu)化是多方面的,原則上是減少系統(tǒng)的瓶頸和資源的占用、增加系統(tǒng)的反應(yīng)速度。
MySQL常用的性能參數(shù)值如下表:

參數(shù)名 功能
connections 連接服務(wù)器的次數(shù)
uptime 服務(wù)器的上線時(shí)間
slow_queries 慢查詢的次數(shù)
com_select 查詢操作的次數(shù)
com_insert 插入操作的次數(shù)
com_update 更新操作的次數(shù)
com_delete 刪除操作的次數(shù)

查詢命令語法:

mysql> show status like 'NAME';

查詢速度優(yōu)化

在數(shù)據(jù)庫中,一般對(duì)數(shù)據(jù)的查詢操作是最頻繁的,提高數(shù)據(jù)的查詢速度可以有效提升數(shù)據(jù)庫的性能。

1. 分析查詢語句

通過分析查詢語句,可以了解查詢語句的執(zhí)行情況,找出查詢語句的不足之處,從而優(yōu)化查詢語句。
分析查詢語句有兩種方式:EXPLAIN和DESCRIBE。

1.1 EXPLAIN

基本語法:

EXPLAIN [EXTENDED] SELECT select_options

參數(shù)select_type:SELECT類型,可以為以下任何一種:

含義
SIMPLE 簡單SELECT(不使用UNION或子查詢)
PRIMARY 最外面的SELECT
UNION UNION中的第二個(gè)或后面的SELECT語句
DEPENDENT UNION UNION中的第二個(gè)或后面的SELECT語句,取決于外面的查詢
UNION RESULT UNION的結(jié)果。
SUBQUERY 子查詢中的第一個(gè)SELECT
DEPENDENT SUBQUERY 子查詢中的第一個(gè)SELECT,取決于外面的查詢
DERIVED 導(dǎo)出表的SELECT(FROM子句的子查詢)

1.2 DESCRIBE

基本語法:

DESCRIBE SELECT select_options

2. 使用索引優(yōu)化查詢

索引可以快速定位表中的某條記錄,使用索引可以提高數(shù)據(jù)庫的查詢速度,從而提高數(shù)據(jù)庫的性能。如果不使用索引,查詢語句將掃描表中全部記錄,速度會(huì)很慢;使用索引,查詢語句可以根據(jù)索引快速定位到待查詢記錄,從而減少查詢的記錄數(shù),達(dá)到提高查詢速度的目的。
一般情況下,索引可以提高查詢速度,但并不是所有使用帶有索引的字段查詢都會(huì)起作用。例如下面幾種特殊情況:

  • 使用LIKE關(guān)鍵字的查詢語句
  • 使用多列索引的查詢語句
  • 使用OR關(guān)鍵字的查詢語句

3. 優(yōu)化子查詢

子查詢可以進(jìn)行SELECT語句的嵌套查詢,即一個(gè)SELECT查詢的結(jié)果作為另一個(gè)的條件。它可以一次性完成很多邏輯上需要多個(gè)步驟才能完成的SQL操作。
其優(yōu)點(diǎn)是查詢語句很靈活,但是其執(zhí)行效率不高。
執(zhí)行子查詢時(shí),MySQL需要為內(nèi)層查詢語句的查詢結(jié)果建立一個(gè)臨時(shí)表,然后外層查詢語句從臨時(shí)表中查詢記錄。查詢完畢后,再撤銷這些臨時(shí)表。因此,子查詢的速度會(huì)受到一定的影響。如果查詢的數(shù)據(jù)量比較大,這種影響也隨之增大。
在MySQL中,可以使用連接(JOIN)查詢來替代子查詢。它不需要建立臨時(shí)表,速度比子查詢要快。如果查詢中使用索引的話,性能會(huì)更好。

數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化

合理的數(shù)據(jù)庫結(jié)構(gòu)不僅可以使數(shù)據(jù)庫占用更小的磁盤空間,而且能夠使查詢速度更快。設(shè)計(jì)時(shí),需要考慮數(shù)據(jù)冗余、查詢和更新的速度、字段的數(shù)據(jù)類型是否合理等多方面內(nèi)容。

1. 分解表

對(duì)于字段較多的表,如果有些字段的使用頻率很低,可以將這些字段分離出來形成新的表。因?yàn)楫?dāng)一個(gè)表的數(shù)據(jù)量很大時(shí),會(huì)由于使用頻率低的字段而變慢。

2. 建立中間表

對(duì)于需要經(jīng)常聯(lián)合查詢的表,可以建立中間表提高查詢效率。

3. 增加冗余字段

設(shè)計(jì)數(shù)據(jù)庫表時(shí)應(yīng)該盡量遵循數(shù)據(jù)庫范式理論的規(guī)約,盡可能減少冗余字段,讓數(shù)據(jù)庫看起來更加精致。但是,合理地加入冗余字段可以提高查詢速度。
表的規(guī)范化程度越高,表與表之間的關(guān)系就越多,需要連接查詢的情況也就越多。
不過冗余字段會(huì)導(dǎo)致一些新問題。如,一個(gè)表中的冗余字段值修改了,就要同步更新其他表中的該字段值,否則就會(huì)使原本一致的數(shù)據(jù)變得不一致。

4. 優(yōu)化插入速度

插入記錄時(shí),影響插入速度的主要是索引、唯一性校驗(yàn)、一次插入記錄條數(shù)等。

4.1. MyISAM引擎表

  • 禁用索引
    對(duì)于非空表,插入記錄時(shí),MySQL會(huì)根據(jù)表的索引對(duì)插入的記錄建立索引。如果插入大量數(shù)據(jù),建立索引會(huì)降低插入記錄的速度。可以在插入記錄前禁用索引,數(shù)據(jù)插入完畢后再開啟索引。
# 禁用索引
ALTER TABLE table_name DISABLE KEYS;

# 啟用索引
ALTER TABLE table_name ENABLE KEYS;

空表批量導(dǎo)入數(shù)據(jù)時(shí)不需要進(jìn)行此操作,因?yàn)镸yISAM引擎的表是在導(dǎo)入數(shù)據(jù)之后才建立索引的。

  • 禁用唯一性檢查
    插入數(shù)據(jù)時(shí),MySQL會(huì)對(duì)插入的記錄進(jìn)行唯一性校驗(yàn)。這種校驗(yàn)也會(huì)降低插入速度。可以先禁用,插入數(shù)據(jù)后再開啟。
# 禁用唯一性校驗(yàn)
SET UNIQUE_CHECKS=0;

# 啟用唯一性校驗(yàn)
SET UNIQUE_CHECKS=1;
  • 使用批量插入

  • 使用LOAD DATA INFILE批量導(dǎo)入

4.2. InnoDB引擎表

  • 禁用唯一性檢查
    和MyISAM引擎的使用一樣。
  • 禁用外鍵檢查
# 禁用外鍵檢查
SET foreign_key_checks=0;

# 啟用外鍵檢查
SET foreign_key_checks=1;
  • 禁止自動(dòng)提交
# 禁用自動(dòng)提交
SET autocommit=0;

# 啟用自動(dòng)提交
SET autocommit=1;

5. 分析表、檢查表和優(yōu)化表

MySQL提供了分析表、檢查表和優(yōu)化表的語句。

5.1. 分析表

分析表主要是分析關(guān)鍵字的分布,語法:

ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE table_name1 [, table_name2, ...]

5.2. 檢查表

MySQL數(shù)據(jù)庫中可以使用CHECK TABLE檢查表,主要是檢查InnoDB和MyISAM類型的表是否存在錯(cuò)誤,語法:

CHECK TABLE table_name1 [, table_name2, ...] ... [option] ...
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

5.3. 優(yōu)化表

優(yōu)化表主要是消除刪除或者更新造成的空間浪費(fèi)。該語句對(duì)InnoDB和MyISAM類型的表都有效。主要是優(yōu)化表中的VARCHAR、BLOB或TEXT類型的字段。語法:

OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE table_name1 [, table_name2, ...]

MySQL服務(wù)器的優(yōu)化

1. 服務(wù)器硬件優(yōu)化

服務(wù)器的硬件性能直接決定著MySQL數(shù)據(jù)庫的性能。優(yōu)化方向:

  • 配置較大的內(nèi)存
  • 配置調(diào)整磁盤系統(tǒng)
  • 合理分布磁盤I/O
  • 配置多處理器

2. MySQL參數(shù)優(yōu)化

通過優(yōu)化MySQL參數(shù)也可以在不提升硬件的前提下提高資源利用率,從而達(dá)到提高服務(wù)器性能的目的。配置參數(shù)都在my.cnf或者my.ini文件中。文章來源地址http://www.zghlxwxcb.cn/news/detail-843667.html

到了這里,關(guān)于mysql筆記:11. 性能優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包