自我總結(jié)之我踩過數(shù)據(jù)庫的坑

今天我們來聊聊SQL崔列,關于SQL我一開始的想法是,我知道select旺遮,update峻呕,delete,insert就可以了趣效,其實對于測試瘦癌,日常工作中我們差不多用到這幾項SQL語句。前幾天我發(fā)現(xiàn)數(shù)據(jù)庫中有個表數(shù)據(jù)太多跷敬,想要把表清空讯私,我自然而然的就執(zhí)行了DELETE FROM XXX,然后我就悲劇了西傀,數(shù)據(jù)表被鎖死了斤寇。請教了開發(fā)之后,才了解到拥褂,這個表數(shù)據(jù)太多大概有12G娘锁,使用delete性能會很慢,而且這個表一直被訪問饺鹃,當你清空的時候會導致數(shù)據(jù)表死鎖莫秆。這個時候才知道自己對于SQL的了解真的很淺,先記錄下開發(fā)大大提供的解決方法:1悔详、create table xxx_new like xxx; 2镊屎、alter table xxx rename to xxx_old; 3、alter table xxx_new rename to xxx; 4茄螃、drop table xxx_old;(truncate table xxx)缝驳。

為了很好去了解開發(fā)大大給的SQL語句,特意去百度了一下归苍,記錄下delete用狱,drop,truncate的區(qū)別:1拼弃、從執(zhí)行速度上來說:drop>truncate>delete夏伊;2、truncate和delete只是刪除表里面的數(shù)據(jù)肴敛,而drop是把整個表的結(jié)構也一起刪除了署海;3吗购、delete是可以回滾的,而truncate和drop是data define language是不能回滾的砸狞;

在日常寫select的時候捻勉,有時會發(fā)現(xiàn)搜索很慢,然后這個時候去查看數(shù)據(jù)庫刀森,發(fā)現(xiàn)我的where里面沒有索引字段踱启。那么問題來了什么是索引,我們經(jīng)常會聽開發(fā)說起索引研底,但是對索引卻是一知半解埠偿。為什么要建索引?有一次我用查詢一個表根據(jù)表的title字段搜索(where titile=”XXX”)榜晦,然后等了2分鐘還沒出結(jié)果冠蒋,特納悶。然后我看了下表結(jié)構乾胶,索引里面沒有title這一項抖剿,而且表有12G(沒錯就是我上面要刪除的那個表),然后我換了一個搜索方式识窿,根據(jù)里面索引字段搜索斩郎,一共40S就出來了,這就是為啥要建立索引喻频。而對于我們測試來說缩宜,知道索引更多的是了解下數(shù)據(jù)庫的性能,如果可以的話甥温,我們可以查看下開發(fā)常用的查詢SQL的字段是否加了索引(然而并不是所有字段的查詢都需要加索引锻煌,更多的要根據(jù)具體業(yè)務來講),關于數(shù)據(jù)庫性能更深入的內(nèi)容后期再講窿侈。

之前我在出數(shù)據(jù)庫select的查詢面試題時炼幔,我涉及了一個二級查詢的題目∈芳颍“獲取room的前50個數(shù)據(jù),先score順序肛著,再created_time倒序”圆兵,一開始以為這個算是個送分題,結(jié)果卻發(fā)現(xiàn)沒有人寫對了枢贿,一般只寫了一半殉农。但是為啥我會出這個題目,因為在日常工作中局荚,我們經(jīng)常測試到榜單超凳,對于測試來說榜單一定是個唯一序列愈污。如果一個榜單是根據(jù)score排序,那么我們要想的是如果score一樣時會怎么樣呢轮傍?我曾經(jīng)就入過這么一個坑:我和開發(fā)用同一條SQL去查詢暂雹,然而我們查詢出來的結(jié)果始終對不上,結(jié)果一查有兩條數(shù)據(jù)的score是一樣的创夜。那為啥同一個SQL語句當order那個字段的值一樣而數(shù)據(jù)會不一樣呢杭跪?我還遇到過一個問題,SQL的前面是一樣的驰吓,但是limit 2和limit 10的數(shù)據(jù)列表前兩個值得排序是不一樣的涧尿。那這又是為什么呢?SQL在查詢的時候檬贰,有自己的一套機制姑廉,它會以最快的速度查出給用戶想要的值,當你的其中一個查詢字段內(nèi)容一樣且沒有其他更多排序要求時翁涤,它就會按照最近拿到的數(shù)據(jù)返回給你庄蹋。

關于數(shù)據(jù)庫的東西有很多,很多都是在小細節(jié)上的迷雪,作為一個測試限书,我一直對自己強調(diào)的是千萬別跟著開發(fā)的思路走,要學會自我思考章咧,自己有一個清晰的思路倦西,這樣我們才能去發(fā)現(xiàn)開發(fā)邏輯中的錯誤。如果我們先聽取開發(fā)的講解赁严,很容易有了先入為主的概念扰柠,那么容易被牽著鼻子走。之前開發(fā)一直不愿意加二級查詢疼约,覺得一級就夠了絕對不會有問題卤档,后來我就用數(shù)據(jù)告訴他,就算有萬分之一的幾率重復程剥,我們也要防止這種情況出現(xiàn)(因為我們活動榜單上的排序涉及到用戶的獎勵劝枣,對于用戶比較重要)。

最后關于數(shù)據(jù)庫的內(nèi)容很多织鲸,今天先講了一些日常中遇到的坑舔腾,其他內(nèi)容后期再續(xù)。希望做測試的同伴們搂擦,在日常使用中能夠?qū)ψ约簩懙腟QL或者開發(fā)給SQL可以多多了解一番稳诚,雖然我們是測試,但是我們也可以和開發(fā)了解的一樣多瀑踢,或者比之更多扳还。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末才避,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子氨距,更是在濱河造成了極大的恐慌桑逝,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衔蹲,死亡現(xiàn)場離奇詭異肢娘,居然都是意外死亡,警方通過查閱死者的電腦和手機舆驶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門橱健,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沙廉,你說我怎么就攤上這事拘荡。” “怎么了撬陵?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵珊皿,是天一觀的道長。 經(jīng)常有香客問我巨税,道長蟋定,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任草添,我火速辦了婚禮驶兜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘远寸。我一直安慰自己抄淑,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布驰后。 她就那樣靜靜地躺著肆资,像睡著了一般。 火紅的嫁衣襯著肌膚如雪灶芝。 梳的紋絲不亂的頭發(fā)上郑原,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音监署,去河邊找鬼颤专。 笑死,一個胖子當著我的面吹牛钠乏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播春塌,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晓避,長吁一口氣:“原來是場噩夢啊……” “哼簇捍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俏拱,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暑塑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锅必,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體事格,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年搞隐,在試婚紗的時候發(fā)現(xiàn)自己被綠了驹愚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡劣纲,死狀恐怖逢捺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情癞季,我是刑警寧澤劫瞳,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站绷柒,受9級特大地震影響志于,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜废睦,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一伺绽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧郊楣,春花似錦憔恳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至今瀑,卻和暖如春程梦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背橘荠。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工屿附, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哥童。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓挺份,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贮懈。 傳聞我的和親對象是個殘疾皇子匀泊,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355