SQL Server数据库设计避坑12实战关键点
|
上周五下午三点,客户老张第三次发来“先做出来看看”那条微信——这次连标点都没打。我盯着屏幕看了四十七秒,回了个句号。他秒回:“对嘛,就这样。” 会议室投影嗡嗡响,像台没修的拖拉机,但没人关。销售小陈坐我左手边,转笔转得飞起,笔帽弹到我咖啡杯沿上,溅了两滴。桌上那盘切好的哈密瓜,黄得发亮,从进屋到现在没动过一牙。 我原以为这单能喘口气——预算三千块,“做个淘宝那样的”。结果打开需求文档第一行:“用户可收藏商品”,第二行:“支持多级分类”,第三行:“要包排名”。我截图发给DBA老周,他回:“你让他自己先排个序?” 不写索引,就写“查得快一点”;不定义字段长度,只说“够用就行”;主键?客户说“那个自增的,看着顺眼就行”。我说“identity列当主键别乱删”,他当场掏出手机翻相册,给我看一张PPT截图:“你看人家淘宝用的就是GUID!”——那PPT右下角还带某培训机构水印,字体是微软雅黑加粗。 最绝的是“加个功能”。上线前一天晚上九点二十三分,微信弹出消息:“老板说,下单后自动给客服发通知,加个微信推送。”我没回。两分钟后他语音进来:“兄弟,真就一行代码的事,对吧?”我听着背景音里有孩子哭、锅铲砸铁锅、还有半句没说完的“妈您别搁那儿……”——他老婆在喊他。 数据库设计十二坑?呵。第一坑:把“订单ID”设成int,等第六万单跑崩那天,客户指着报错说“你们是不是搞错了类型?”——不是搞错,是当初他说“谁家订单能到十万?”第二坑:日期字段全用datetime,不写时区,也不存UTC,结果财务报表凌晨两点的数据跟白天算重了,他们问“SQL是不是有bug”,没问为啥凌晨两点还在下单。第三坑:外键?“影响插入速度”,所以删了。后来做关联查询时执行计划里扫了三遍user表,客户又问:“这服务器是不是该升级?” 电梯里遇到隔壁组的老吕,他按了B2,我按18。他问:“又去见那个‘淘宝’客户?”我说:“嗯。”他笑:“上个月他们找我配Redis,要求缓存‘所有热点数据’,我问啥叫热点,他打开浏览器搜‘热点’——搜出来的是新闻联播词频统计。” 第四坑:把用户密码字段设varchar(50),理由是“MD5就是32位”。我改成了char(64),他微信问我:“多出来的32位谁买单?”第五坑:“这个字段以后可能要扩展”,所以直接上text——SQL Server 2016以后早deprecated了,但他坚持“留着总没错”。第六坑:没做分区,日志表每天插八万行,三个月后备份慢成幻灯片,客户电话催我:“你是不是把库弄成单线程了?”——我没吭声,默默把backup压缩率调到20%。 第七坑更滑稽:视图里套视图,再套函数,最后join一张临时表——名字叫“实时销量汇总_V2_FINAL_优化版_勿删”。第八坑:存储过程里拼SQL,参数全用+号连字符串,防注入?他说“我们内部系统,谁会黑自己?”第九坑:把地理坐标存两个float字段,不建空间索引,结果地图筛选一卡半天,他们改口:“其实位置不重要,随便显示一个省就行。” 第十坑:默认约束写GETDATE(),可业务要求所有时间精确到毫秒——他忘了一件事:GETDATE()在SQL Server里精度是3.33毫秒,round误差永远在。第十一坑:“用户头像路径”设nvarchar(100),结果有人上传了带UTM参数的CDN链接,超长47字符,存不进去,报错是“字符串截断”,他截图发群里:“你们接口校验太严了。” 第十二坑……算了,第十二坑是尾款没结。上月十八号上线,今天二十四号,合同里写着“验收后付清”,验收标准那页他亲笔签的字,白纸黑字写着“首页可访问、登录无报错、订单流程走通”。现在首页HTTPS证书过期,登录页404,订单提交返回500——但他昨天在电话里说:“这些是运维问题,不归数据库管。”
文章配图,仅供参考 我盯着那盘哈密瓜看了会儿,终于伸手拿了一牙。汁水沾指尖,黏。小陈笔还在转,嗒、嗒、嗒,节奏越来越慢,快停了。老张刚发来新消息:“改个颜色还要加钱?”——就这一句,没标点,没换行,没表情。我拇指悬在键盘上方三秒,删掉已打的“你觉得呢”,改成“您说得对”。优胜劣汰?不是市场选人,是客户筛人。接这种活的,活该被筛下去。我不是不想做淘宝,是淘宝当年第一版MySQL schema里,连字段注释都写了三行。咱们这儿,连建库语句里的collation都是默认,连问都不问一声。上回更离谱的是个教培客户,非要“课程表支持跨年课时自动折算”,我画了张ER图,他指着中间连接线说:“这根线能不能换个蓝色?我们VI是藏青。” 下回合同里这条必须写死:数据库Schema确认签字页,需客户方技术负责人手写“本人确认理解以下所有字段长度、约束、索引策略及未来三年预期数据量级”,并摁红手印。没红手印?对不起,DDL脚本不执行。至于那盘哈密瓜——刚发现最底下那块发暗了,泛一层极淡的酒味。谁也没动过它。反正也没人吃。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


站长必修:SQL Server运维12大故障避坑指南
算法工程师私藏3大避坑心法,站长聚会首发
Windows数据科学环境搭建:12年架构师避坑与高效配置