自我总结之我踩过数据库的坑

今天我们来聊聊SQL,关于SQL我一开始的想法是,我知道select,update,delete,insert就可以了,其实对于测试,日常工作中我们差不多用到这几项SQL语句。前几天我发现数据库中有个表数据太多,想要把表清空,我自然而然的就执行了DELETE FROM XXX,然后我就悲剧了,数据表被锁死了。请教了开发之后,才了解到,这个表数据太多大概有12G,使用delete性能会很慢,而且这个表一直被访问,当你清空的时候会导致数据表死锁。这个时候才知道自己对于SQL的了解真的很浅,先记录下开发大大提供的解决方法: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)。

为了很好去了解开发大大给的SQL语句,特意去百度了一下,记录下delete,drop,truncate的区别:1、从执行速度上来说:drop>truncate>delete;2、truncate和delete只是删除表里面的数据,而drop是把整个表的结构也一起删除了;3、delete是可以回滚的,而truncate和drop是data define language是不能回滚的;

在日常写select的时候,有时会发现搜索很慢,然后这个时候去查看数据库,发现我的where里面没有索引字段。那么问题来了什么是索引,我们经常会听开发说起索引,但是对索引却是一知半解。为什么要建索引?有一次我用查询一个表根据表的title字段搜索(where titile=”XXX”),然后等了2分钟还没出结果,特纳闷。然后我看了下表结构,索引里面没有title这一项,而且表有12G(没错就是我上面要删除的那个表),然后我换了一个搜索方式,根据里面索引字段搜索,一共40S就出来了,这就是为啥要建立索引。而对于我们测试来说,知道索引更多的是了解下数据库的性能,如果可以的话,我们可以查看下开发常用的查询SQL的字段是否加了索引(然而并不是所有字段的查询都需要加索引,更多的要根据具体业务来讲),关于数据库性能更深入的内容后期再讲。

之前我在出数据库select的查询面试题时,我涉及了一个二级查询的题目。“获取room的前50个数据,先score顺序,再created_time倒序”,一开始以为这个算是个送分题,结果却发现没有人写对了,一般只写了一半。但是为啥我会出这个题目,因为在日常工作中,我们经常测试到榜单,对于测试来说榜单一定是个唯一序列。如果一个榜单是根据score排序,那么我们要想的是如果score一样时会怎么样呢?我曾经就入过这么一个坑:我和开发用同一条SQL去查询,然而我们查询出来的结果始终对不上,结果一查有两条数据的score是一样的。那为啥同一个SQL语句当order那个字段的值一样而数据会不一样呢?我还遇到过一个问题,SQL的前面是一样的,但是limit 2和limit 10的数据列表前两个值得排序是不一样的。那这又是为什么呢?SQL在查询的时候,有自己的一套机制,它会以最快的速度查出给用户想要的值,当你的其中一个查询字段内容一样且没有其他更多排序要求时,它就会按照最近拿到的数据返回给你。

关于数据库的东西有很多,很多都是在小细节上的,作为一个测试,我一直对自己强调的是千万别跟着开发的思路走,要学会自我思考,自己有一个清晰的思路,这样我们才能去发现开发逻辑中的错误。如果我们先听取开发的讲解,很容易有了先入为主的概念,那么容易被牵着鼻子走。之前开发一直不愿意加二级查询,觉得一级就够了绝对不会有问题,后来我就用数据告诉他,就算有万分之一的几率重复,我们也要防止这种情况出现(因为我们活动榜单上的排序涉及到用户的奖励,对于用户比较重要)。

最后关于数据库的内容很多,今天先讲了一些日常中遇到的坑,其他内容后期再续。希望做测试的同伴们,在日常使用中能够对自己写的SQL或者开发给SQL可以多多了解一番,虽然我们是测试,但是我们也可以和开发了解的一样多,或者比之更多。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343