本篇內(nèi)容主要講解“MySQL數(shù)據(jù)庫(kù)優(yōu)化語(yǔ)句”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“mysql數(shù)據(jù)庫(kù)優(yōu)化語(yǔ)句”吧!
目前創(chuàng)新互聯(lián)公司已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、洛隆網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
mysql優(yōu)化語(yǔ)句
數(shù)據(jù)庫(kù)語(yǔ)句:
Ddl(數(shù)據(jù)定義語(yǔ)言) alter create drop
Dml(數(shù)據(jù)操作語(yǔ)言) inset delete update
Dtl(數(shù)據(jù)事務(wù)語(yǔ)言) conmmit rollback savepoint
Select
Dcl(數(shù)據(jù)控制語(yǔ)句) grant賦權(quán)限 revoke回收
Mysql數(shù)據(jù)庫(kù)優(yōu)化:
1、 數(shù)據(jù)庫(kù)表 要設(shè)計(jì)合理(符合3NF,有時(shí)候也需要適當(dāng)?shù)哪娣妒剑?br/>2、 Sql語(yǔ)句的優(yōu)化(索引,常用小技巧)
3、 數(shù)據(jù)庫(kù)的配置
4、 適當(dāng)?shù)挠布渲煤筒僮飨到y(tǒng)
5、 讀寫(xiě)分離
問(wèn):什么是數(shù)據(jù)庫(kù)3范式?
1NF: 就是具有原子性,不可分割(只要使用的是關(guān)系型數(shù)據(jù)庫(kù),就會(huì)自動(dòng)符合)
2NF: 在滿(mǎn)足1NF的基礎(chǔ)上,我們考慮是否滿(mǎn)足2NF,只要表的記錄滿(mǎn)足唯一性,也就是說(shuō),你的同一張表中不可能出現(xiàn)完全相同的記錄,一般說(shuō)我們?cè)诒碇性O(shè)計(jì)一個(gè)主鍵即可。
3NF: 在滿(mǎn)足2NF: 的基礎(chǔ)上,我們考慮是否滿(mǎn)足3NF,既我們的字段信息可以通過(guò)關(guān)聯(lián)的關(guān)系,派生即可(通常我們通過(guò)外鍵來(lái)處理)使用外鍵數(shù)據(jù)庫(kù)的存儲(chǔ)引擎必須是innoDB
問(wèn)2:數(shù)據(jù)庫(kù)參數(shù)配置
對(duì)于innodb存儲(chǔ)引擎最重要的就是內(nèi)存,所以下面的兩個(gè)參數(shù)調(diào)的很大
Innodb_additional_mem_pool_size = 64M www.2cto.com
Innodb_buffer_pool_size = 1G 緩沖池大小
對(duì)于myisam,需要調(diào)整key_buffer_size
用show status 語(yǔ)句可以看到當(dāng)前狀態(tài),以決定調(diào)整那些參數(shù)
一、顯示你使用過(guò)多少次insert , update , delete 等
Sql: show status like “Com”;
//在命令窗口中不關(guān)閉的時(shí)候查詢(xún)會(huì)準(zhǔn)確,如果關(guān)閉就會(huì)從新開(kāi)始統(tǒng)計(jì)
Show sessionstatus like “Com_update”;
//就算關(guān)閉窗口也會(huì)將全部的你執(zhí)行過(guò)的次數(shù)統(tǒng)計(jì)出來(lái)
Show globalstatus like “Com_insert”;
Example: session
假如已經(jīng)使用了6次update
1、 用session統(tǒng)計(jì) 會(huì)是6次
如果關(guān)閉后命令窗口后在執(zhí)行Show session statuslike “Com_update”; 就為0了
2、 但是如果用Show global status like “Com_insert”;就是6次
二、顯示試圖連接Mysql服務(wù)器的次數(shù)
Show status like “Connections”;
數(shù)據(jù)庫(kù)啟動(dòng)多長(zhǎng)時(shí)間了
Show status like “uptime”;
顯示慢查詢(xún)多少次(默認(rèn)是10秒)
Show status like “Slow_queries”;
四、如何在一個(gè)項(xiàng)目中,找到慢查詢(xún)的select,數(shù)據(jù)庫(kù)支持把慢查詢(xún)的語(yǔ)句記錄到日志中,供程序員來(lái)分析 www.2cto.com
步驟:
1、 啟動(dòng)mysql(特殊的啟動(dòng)方式)
a) 在mysql的安裝目錄下的bin目錄下啟動(dòng)mysqld.exe –slow-query
b) Netstat –an 查看3306端口是否啟動(dòng)
c) 查詢(xún)慢查詢(xún)的次數(shù) show status like “Slow_queries”;
d) 設(shè)置慢查詢(xún)的時(shí)間 set long_query_time=1;
索引優(yōu)化:
比如說(shuō)增加主鍵索引
Alter table user add primary key(id);
刪除主鍵索引
Alter table user drop primary key
刪除索引
Alter table user drop index 索引名
顯示索引
Show index(es) from 表名
Show keys from 表名
Desc 表名
增加索引致使查詢(xún)會(huì)變快好多,其原理就像一本書(shū)如果沒(méi)有目錄的話(huà)那么如果你想找一個(gè)知識(shí)點(diǎn)會(huì)很難找到,只能一點(diǎn)一點(diǎn)的翻著找,如果有目錄的話(huà)會(huì)很快的定位到這個(gè)知識(shí)點(diǎn)在那個(gè)章節(jié)中大概什么位置這樣查詢(xún)起來(lái)自然就會(huì)快了啊,但是有利必有弊,索引會(huì)對(duì)查詢(xún)帶來(lái)好處,但是對(duì)add update delete 來(lái)說(shuō)自然就很麻煩了,比如說(shuō)你添加一個(gè)知識(shí)點(diǎn),你不許還有在目錄中添加他是屬于那章那節(jié)中的那個(gè)知識(shí)點(diǎn),同樣在修改和刪除的時(shí)候也會(huì)隨之改變,來(lái)保持信息的準(zhǔn)確性。
一個(gè)自動(dòng)分析是否需要使用索引的命令:explain
Example: explain select * from emp where id = 9;
索引的分類(lèi):
主鍵索引(primary key)
唯一鍵索引(unique)
Index(普通索引)
全文索引(fulltext)
復(fù)合索引(多列和在一起)
在那些列上添加索引比較合適:
1、比較頻繁的作為查詢(xún)條件的字段應(yīng)該加上索引
2、 唯一性比較差的字段不適合單獨(dú)創(chuàng)建索引,及時(shí)頻繁作為查詢(xún)條件
3、 更新非常頻繁的字段不適合創(chuàng)建索引
4、 不會(huì)出現(xiàn)在where子句中的字段不該創(chuàng)建索引
查詢(xún)一個(gè)表中的所有索引: show indexes from table(表名)
索引的使用:
查詢(xún)要使用索引最重要的條件是查詢(xún)條件中需要使用索引
以下幾種情況可能會(huì)使用到索引
1、 對(duì)于創(chuàng)建的多列索引,只要查詢(xún)條件使用了最左邊的列,索引一般就會(huì)被使用
2、 對(duì)于使用like的查詢(xún),查詢(xún)?nèi)绻?amp;lsquo;%aaa’不會(huì)使用到索引‘aaa%’會(huì)使用到索引
以下的表中將不使用索引
1、 如果條件中有or,即使其中有條件帶索引也不會(huì)使用
2、 對(duì)于多列索引,不是使用的第一部分,則不會(huì)使用索引
3、 Like查詢(xún)是以%開(kāi)頭
4、 如果列類(lèi)型是字符串,那么一定要在條件中將數(shù)據(jù)使用引號(hào)引起來(lái),否則不使用索引。
5、 如果mysql估計(jì)使用全表掃描要比使用索引快,則不使用索引。
查看索引的使用情況
Show status like ‘handler_read%’;
只有handler_read_key 越大越好
Handler_read_rnd_next 越小越好
數(shù)據(jù)庫(kù)類(lèi)型:
MyISAM 不支持事務(wù)和外鍵,一張表由三個(gè)文件組成,.frm .myi .myd
innoDB 支持事務(wù)和外鍵
對(duì)于MyISAM來(lái)說(shuō)查詢(xún)快,不過(guò)刪除字段時(shí)空間是不會(huì)釋放的,必須使用手動(dòng)釋放 optimize table table_name
到此,相信大家對(duì)“mysql數(shù)據(jù)庫(kù)優(yōu)化語(yǔ)句”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
當(dāng)前題目:mysql數(shù)據(jù)庫(kù)優(yōu)化語(yǔ)句
當(dāng)前地址:http://aaarwkj.com/article0/peiiio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站收錄、定制網(wǎng)站、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)