日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQL自動審核-自助上線平臺

為了讓DBA從日常繁瑣的工作中解放出來,通過SQL自助平臺,可以讓開發(fā)自上線,開發(fā)提交SQL后就會自動返回優(yōu)化建議,無需DBA的再次審核,從而提升上線效率,有利于建立數(shù)據(jù)庫開發(fā)規(guī)范。

創(chuàng)新互聯(lián)公司是專業(yè)的芙蓉網(wǎng)站建設(shè)公司,芙蓉接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行芙蓉網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

借鑒了去哪網(wǎng)Inception的思路并且把美團(tuán)網(wǎng)SQLAdvisor(索引優(yōu)化建議)集成在一起,并結(jié)合了之前寫的《DBA的40條軍規(guī)》納入了審核規(guī)則里,用PHP實(shí)現(xiàn)。目前在我公司內(nèi)部使用。

SQL自動審核主要完成兩方面目的:

1、避免性能太差的SQL進(jìn)入生產(chǎn)系統(tǒng),導(dǎo)致整體性能降低。

2、檢查開發(fā)設(shè)計(jì)的索引是否合理,是否需要添加索引。

思路其實(shí)很簡單:

1、獲取開發(fā)提交的SQL

2、對要執(zhí)行的SQL做分析,觸碰事先定義好的規(guī)則來判斷這個SQL是否可以自動審核通過,未通過審核的需要人工處理。

下面是首頁界面:

使用說明:

1、針對select/insert/update/create/alter加了規(guī)則,delete需要審批。

2、語句之間要有空格,例where id = 100,沒有空格會影響判斷的準(zhǔn)確性。

3、SQL語句后面要加分號; MySQL解析器規(guī)定分號才可以執(zhí)行SQL。

4、反引號`可能會造成上線失敗,需要用文本編輯器替換掉。

5、支持多條SQL解析,用######六個井號分割。

  • SELECT審核

1、開發(fā)人員可以直接將SQL語句提交到平臺進(jìn)行風(fēng)險評估

2、平臺對SQL語句進(jìn)行分析,自動給出其不符合開發(fā)規(guī)范的改進(jìn)意見

3、適用場景:應(yīng)用開發(fā)階段

檢查項(xiàng):

1、select * 是否有必要查詢所有的字段?

2、警告!沒有where條件,注意where后面的字段要加上索引

3、沒有l(wèi)imit會查詢更多的數(shù)據(jù)

4、警告!子查詢性能低下,請轉(zhuǎn)為join表關(guān)聯(lián)

5、提示:in里面的數(shù)值不要超過1000個

6、提示:采用join關(guān)聯(lián),注意關(guān)聯(lián)字段要都加上索引,如on a.id=b.id

7、提示:MySQL對多表join關(guān)聯(lián)性能低下,建議不要超過3個表以上的關(guān)聯(lián)

8、警告!like '%%'雙百分號無法用到索引,like 'mysql%'這樣是可以利用到索引的

9、提示:默認(rèn)情況下,MySQL對所有GROUP BY col1,col2...的字段進(jìn)行排序。如果查詢包括GROUP BY,

想要避免排序結(jié)果的消耗,則可以指定ORDER BY NULL禁止排序。

10、警告!MySQL里用到order by rand()在數(shù)據(jù)量比較多的時候是很慢的,因?yàn)闀?dǎo)致MySQL全表掃描,故也不會用到索引

11、提示:是否要加一個having過濾下?

12、警告!禁止不必要的order by排序,因?yàn)榍懊嬉呀?jīng)count統(tǒng)計(jì)了

13、警告!MySQL里不支持函數(shù)索引,例DATE_FORMAT('create_time','%Y-%m-%d')='2016-01-01'是無法用到索引的,需要改寫為

create_time>='2016-01-01 00:00:00' and create_time<='2016-01-01 23:59:59'

之后會調(diào)用美團(tuán)網(wǎng)SQLAdvisor進(jìn)行索引檢查

使用概述:

1、選中你的數(shù)據(jù)庫名字

2、在對話框中輸入你要提交的SQL

3、點(diǎn)擊提交審核按鈕

提交以后,系統(tǒng)自動返回SQL優(yōu)化改進(jìn)意見。

  • insert審核

檢查項(xiàng):

1、警告: insert 表1 select 表2,會造成鎖表。

審核通過以后,會彈出用戶名和密碼,提示上線:

點(diǎn)擊我要上線按鈕,會調(diào)用MySQL客戶端進(jìn)行語法校驗(yàn)和表是否存在等校驗(yàn)。

  • update審核

檢查項(xiàng):

1、警告!沒有where條件,update會全表更新,禁止執(zhí)行!??!

2、更新的行數(shù)小于10000行,可以由開發(fā)自助執(zhí)行。否則請聯(lián)系DBA執(zhí)行!!!

防止where 1=1 繞過審核規(guī)則

必須寫真實(shí)的where條件才可以執(zhí)行更新操作。

上線成功的SQL會記錄到一張操作日志表里,并且會把binlog位置點(diǎn)記錄下來,方便日后的回滾操作。

  • create審核

檢查項(xiàng):

1、警告!表沒有主鍵

2、警告!表主鍵應(yīng)該是自增的,缺少AUTO_INCREMENT

3、提示:id自增字段默認(rèn)值為1,auto_increment=1

4、警告!表沒有索引

5、警告!表中的索引數(shù)已經(jīng)超過5個,索引是一把雙刃劍,它可以提高查詢效率但也會降低插入和更新的速度并占用磁盤空間

6、警告!表字段沒有中文注釋,COMMENT應(yīng)該有默認(rèn)值,如COMMENT '姓名'

7、警告!表沒有中文注釋

8、警告!表缺少utf8字符集,否則會出現(xiàn)亂碼

9、警告!表存儲引擎應(yīng)設(shè)置為InnoDB

10、警告!表應(yīng)該為timestamp類型加默認(rèn)系統(tǒng)當(dāng)前時間

審核通過后,就可以上線了

上線失敗提示:

  • alter審核

檢查項(xiàng):

1、警告!不支持create index語法,請更改為alter table add index語法。

2、警告!更改表結(jié)構(gòu)要減少與數(shù)據(jù)庫的交互次數(shù),應(yīng)改為,例alter table t1 add index IX_uid(uid),add index IX_name(name)

3、表記錄小于100萬行,可以由開發(fā)自助執(zhí)行。否則表太大請聯(lián)系DBA執(zhí)行!

數(shù)據(jù)庫上線工單查詢(只記錄成功執(zhí)行的SQL)


網(wǎng)站欄目:SQL自動審核-自助上線平臺
文章源于:http://www.5511xx.com/article/cdheodd.html