最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySql的優(yōu)化步驟介紹(推薦)

 更新時間:2016年06月22日 09:58:40   投稿:jingxian  
下面小編就為大家?guī)硪黄狹ySql的優(yōu)化步驟介紹(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

MySql優(yōu)化的一般步驟:

1.通過show status 命令了解各種sql的執(zhí)行效率

SHOW STATUS提供msyql服務(wù)器的狀態(tài)信息

一般情況下,我們只需要了解以”Com”開頭的指令

show session status like ‘Com%':顯示當(dāng)前的連接的統(tǒng)計結(jié)果

show global status like ‘Com%' :顯示自數(shù)據(jù)庫上次啟動至今的統(tǒng)計結(jié)果

注:默認是session級別的

其中Com_XXX表示XXX語句所執(zhí)行的次數(shù)。

重點注意:Com_select,Com_insert,Com_update,Com_delete通過這幾個參數(shù),可以容易地了解到當(dāng)前數(shù)據(jù)庫的應(yīng)用是以插

入更新為主還是以查詢操作為主,以及各類的SQL大致的執(zhí)行比例是多少。

另外,還有幾個參數(shù)需要注意下:

show status like ‘Connections'// 試圖連接MySQL服務(wù)器的次數(shù)

show status like ‘Uptime'//服務(wù)器工作的時間(單位秒)

show status like ‘Slow_queries'//慢查詢的次數(shù) (默認是10秒中就當(dāng)做是慢查詢,如下圖所示)

m.fzitv.net

a) 如何查詢mysql的慢查詢時間

Show variables like 'long_query_time';

b) 修改mysql 慢查詢時間

set long_query_time=2//如果查詢時間超過2秒就算作是慢查詢

2. 定位執(zhí)行效率較低的SQL語句(dql出現(xiàn)問題的概率較dml的大)

問題是:如何在一個項目中,找到慢查詢的select語句?

答案:mysql支持把慢查詢語句記錄到日志文件中。程序員需要修改php.ini的配置文件,默認情況下,慢查詢記錄是不開啟的。

開啟慢查詢記錄的步驟:

打開 my.ini ,找到 [mysqld] 在其下面添加

long_query_time = 2

log-slow-queries = D:/mysql/logs/slow.log #設(shè)置把日志寫在那里,可以為空,系統(tǒng)會給一個缺省的文件

例子:我們數(shù)據(jù)表中有1千萬條的數(shù)據(jù)量

DQL語句:SELECT * FROM order_copy WHERE id=12345;

m.fzitv.net

查詢耗時:19s>2s,所以mysql會將該條select語句記錄到慢查詢?nèi)罩局?/p>

SELECT * FROM order_copy WHERE id=12345的執(zhí)行時間:

添加索引前:19s

添加索引后:0.08s

3.通過explain分析低效率的SQL語句的執(zhí)行情況

使用explain分析該dql語句:

EXPLAIN SELECT * FROM order_copy WHERE id=12345

會產(chǎn)生如下信息:

select_type:表示查詢的類型。

table:輸出結(jié)果集的表

type:表示表的連接類型(system和const為佳)

possible_keys:表示查詢時,可能使用的索引

key:表示實際使用的索引

key_len:索引字段的長度

rows:掃描的行數(shù)

Extra:執(zhí)行情況的描述和說明

注意:要盡量避免讓type的結(jié)果為all,extra的結(jié)果為:using filesort

m.fzitv.net

4.確定問題并采取相應(yīng)的優(yōu)化措施

常用的優(yōu)化措施是添加索引。添加索引,我們不用加內(nèi)存,不用改程序,不用調(diào)sql,只要執(zhí)行個正確的'create index',查詢速度就可能提高百倍千倍。但是天下沒有免費的午餐,查詢速度的提高是以插入、更新、刪除的速度為代價的,這些寫操作,增加了大量的I/O。

例如:給字段id添加索引:

ALTER TABLE order_copy ADD PRIMARY KEY(id)

給1千萬的數(shù)據(jù)添加primary key 需要耗時: 428秒(7分鐘)

EXPLAIN SELECT * FROM order_copy WHERE id=12345

m.fzitv.net

正是因為給id添加了索引,才使得rows的結(jié)果為1

但是索引并不是可以隨便添加的,以下幾種情況需牢記在心:

較頻繁的作為查詢條件字段應(yīng)該創(chuàng)建索引

select * from order_copy where id = $id

唯一性太差的字段不適合單獨創(chuàng)建索引,即使頻繁作為查詢條件

select * from order_copy where sex='女'

更新非常頻繁的字段不適合創(chuàng)建索引

select * from order_copy where order_state='未付款'

不會出現(xiàn)在WHERE子句中字段不該創(chuàng)建索引

索引的類型:

PRIMARY 索引 => 在主鍵上自動創(chuàng)建INDEX 索引 => 就是普通索引UNIQUE 索引 => 相當(dāng)于INDEX + UniqueFULLTEXT => 只在MYISAM 存儲引擎支持, 目的是全文索引,在內(nèi)容系統(tǒng)中用的多, 在全英文網(wǎng)站用多(英文詞獨立). 中文數(shù)據(jù)不常用,意義不大 國內(nèi)全文索引通常 使用 sphinx 來完成.

索引的使用

建立索引 create [UNIQUE|FULLTEXT] index index_name on tbl_name (col_name [(length)] [ASC | DESC] , …..);
alter table table_name ADD INDEX [index_name] (index_col_name,...)

添加主鍵(索引) ALTER TABLE 表名 ADD PRIMARY KEY(列名,..); 聯(lián)合主鍵

刪除索引 DROP INDEX index_name ON tbl_name;
alter table table_name drop index index_name;刪除主鍵(索引)比較特別: alter table t_b drop primary key;查詢索引(均可) show index from table_name;
show keys from table_name;
desc table_Name;

以上就是小編為大家?guī)淼腗ySql的優(yōu)化步驟介紹(推薦)全部內(nèi)容了,希望大家多多支持腳本之家~

您可能感興趣的文章:

相關(guān)文章

  • MySQL快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法

    MySQL快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法

    有些時候,我們?yōu)榱丝焖俅罱ㄒ粋€測試環(huán)境,或者說是克隆一個網(wǎng)站,需要復(fù)制已經(jīng)存在的mysql數(shù)據(jù)庫。下面小編給大家介紹mysql快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法,小伙伴們跟著小編一起學(xué)習(xí)吧
    2015-10-10
  • MYSQL中獲取得最后一條記錄的語句

    MYSQL中獲取得最后一條記錄的語句

    MYSQL中獲取得最后一條記錄的語句,需要的朋友可以參考下。
    2010-03-03
  • MySQL建立唯一索引實現(xiàn)插入重復(fù)自動更新

    MySQL建立唯一索引實現(xiàn)插入重復(fù)自動更新

    這篇文章給大家分享的是當(dāng)向數(shù)據(jù)插入數(shù)據(jù)時,判斷字段是不是存在,存在執(zhí)行更新操作,如果不存在就執(zhí)行插入操作的方法,有需要的朋友們可以參考借鑒。
    2016-09-09
  • MySQL游標(biāo)詳細介紹

    MySQL游標(biāo)詳細介紹

    大家好,本篇文章主要講的是MySQL游標(biāo)詳細介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • MySql分表、分庫、分片和分區(qū)知識深入詳解

    MySql分表、分庫、分片和分區(qū)知識深入詳解

    這篇文章主要介紹了MySql分表、分庫、分片和分區(qū)知識深入詳解,如果有并發(fā)場景和數(shù)據(jù)量較大的場景的可以看一下文章,對你會有或多或少的幫助
    2021-03-03
  • MySQL實現(xiàn)用逗號進行拼接、以逗號進行分割

    MySQL實現(xiàn)用逗號進行拼接、以逗號進行分割

    這篇文章主要介紹了MySQL實現(xiàn)用逗號進行拼接、以逗號進行分割問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • SQL窗口函數(shù)OVER用法實例整理

    SQL窗口函數(shù)OVER用法實例整理

    做SQL題時碰到了over()函數(shù)不太理解,所以整理了下,下面這篇文章主要給大家介紹了關(guān)于SQL窗口函數(shù)OVER用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • 解決mySQL中1862(phpmyadmin)/1820(mysql)錯誤的方法

    解決mySQL中1862(phpmyadmin)/1820(mysql)錯誤的方法

    最近在工作中發(fā)現(xiàn)一直在運行的mysql突然報錯了,錯誤提示1820,phpmyadmin也不能登陸,錯誤為1862,雖然摸不著頭腦但只能想辦法解決,下面這篇文章給大家分享了解決這個問題的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • mysql服務(wù)器無法啟動的解決方法

    mysql服務(wù)器無法啟動的解決方法

    本文主要介紹了mysql服務(wù)器無法啟動的解決方法,mysql服務(wù)器無法啟動時,一般時配置文件和路徑的問題,下面就來介紹一下解決方法,感興趣的可以了解一下
    2023-09-09
  • MySQL學(xué)習(xí)之?dāng)?shù)據(jù)更新操作詳解

    MySQL學(xué)習(xí)之?dāng)?shù)據(jù)更新操作詳解

    這篇文章我們將學(xué)習(xí)一下用于數(shù)據(jù)更改的 “UPDATE” 語句, “UPDATE” 語句也是屬于 DML 這一類數(shù)據(jù)庫操作語言,感興趣的可以了解一下
    2022-08-08

最新評論

金昌市| 永顺县| 芮城县| 易门县| 玛曲县| 江阴市| 临桂县| 夏河县| 左贡县| 鹿泉市| 鹿泉市| 巧家县| 伊宁县| 秭归县| 新巴尔虎左旗| 德阳市| 大埔县| 沂水县| 册亨县| 噶尔县| 明溪县| 阳城县| 墨竹工卡县| 神木县| 洪雅县| 林西县| 临桂县| 汉阴县| 霞浦县| 正宁县| 潮州市| 岗巴县| 互助| 正阳县| 白玉县| 呼图壁县| 马边| 固安县| 扎鲁特旗| 高碑店市| 南召县|