很多遊戲專案都是通過每週更新大版本來維持使用者的粘性和活躍度,而更新版本必然伴隨著資料庫的新建create、改表alter的sql。
運維或者dba負責審核這類sql是否合理、高效,因為很多開發同事特別是經驗少的新人是不考慮sql效能、是否合乎mysql的最佳實踐。
經常很多建表語句漏加索引或者加錯索引(不滿足最左匹配等情況),需要等到開服後資料庫負載過高引起告警才發現問題。
mysql的配置中有乙個日誌是記錄沒有使用索引的sql,記錄進slow log日誌中,不過實際使用過程中,的確存在著很多合理的不使用索引的情況,所以這個日誌一般不開啟。
為了避免人工審閱的重複勞動,所以運維可以通過寫程式、指令碼來自動審核sql,而審核的條件一般如下:
1、表結構是否合法 //不合法當然不能通過
2、表名、列名長度超過 16 //主要跟我們自己的授權有關係
3、必須有 unsigned //業務最容易忘記新增,當然如果一定要負值,那麼就走人工審核;
4、必須為 innodb //當然了,我已經忘記還有myisam了,統計日誌表除外
5、int bigint(10) 不能小於 10 //大家見過int(1)的情況麼?
6、varchar 長度小於 3000 // 這也算是乙個人為規定,沒有任何意義
7、text 字段個數不能大於 3 //人為規定而已
8、主鍵必須為 int 型別 //不int,真的會死人
9、索引不能有重複 //見過key(id),key(id,uid)的情況嗎?
10、索引個數不能大於 5 個(包括主鍵) //人為定義而已
11、索引字段必須為 not null,並且有 default 值 //參照高效能那本書說的,其實不一定影響效能
12、sql 是否使用到索引 //不能用到索引的sql,真的很慘
13、sql 中不能有 * //由於* 經常導致流量、o巨大,所以,也強制了
14、自增字段必須為 int 或者 bigint //見過自增用smallint的嗎?然後一下就溢位了
15、請不要使用mysql的保留字(reserved words) //寫指令碼,大家討厭<`>符號麼?
開發提交sql後,會直接呼叫後端審核程式,程式根據以上規則,進行審核,就極大的降低了運維、dba的工作量。
當sql審核通過後,是否馬上執行?
根據以下情況判斷:
1、表小於10w行,小於10m空間大小,那麼直接執行sql;
3、如果1、2都不行,走人工上線流程;
滲透測試 SQL自動化注入
自動化注入 半自動化 burp 全自動sqlmap 定製化指令碼 sqli labs題庫 less 01 字元型注入 單引號 id 1 id 1 and 1 2 union select 1,version 3 less 02 數字型注入 id 2 union select 1,2,version ...
自動化測試 引言 自動化之我見
作為開篇,這裡先簡單介紹一下個人情況 本人非計算機專業的本科畢業,從事軟體測試工作一年多了,同樣的,接觸自動化測試領域也有一年了,打算開個部落格把我在工作中所學到與自動化測試有關的東西分享出來。好啦,下面開始說正題 自動化測試自身就是乙個很大的概念。逛過一些測試論壇的童鞋應該會知道qtp和loadr...
自動化測試 web自動化測試
自動化 由機器裝置代替人為完成制定目標的過程 優點 提高工作效率 減少勞動力 產品規格同一標準 批量生產 自動化測試 讓程式代替人為去驗證程式功能的過程,即在預設條件下執行程式系統 流程確定 搭建自動化框架 編寫測試用例,將其轉化為soupui 介面 自動化測試指令碼 執行自動化測試指令碼 輸出執行...