咨询热线:15198394869 联系人:李德泉 地址:龙岩工业园区
MySQL数据库优化小结
来源:亚美最新官方网址 发布时间:2019-11-12 点击量:301
有什么错漏,说一下,数据库这些都是经验之谈,总有错过的。
一 数据库设计
以前都说三大范式,具体应该叫数据库范式
第一范式-表的数据不重复,数据是唯一的
第二范式-表的数据有主键,数据是有主属性可查的
第三范式-表的其他普通数据不依赖其他普通数据,就是依赖的数据记得给索引。要用其他属性做查询条件记得用索引
巴斯-科德范式(我称为三个半范式)-表的数据与其他表的数据(子集)的关系,表的其他普通数据 不依赖 其他表的数据,外键。其他表的数据(子集)不该有表的冗杂数据,表不该有其他表的数据(子集)的冗杂数据,而且还要有他的主键或者索引(外键)
以上基本面试可能问到,三个半范式答出来算加分项。后面的范式就到了基本这时候就到了代码设计事务逻辑这层次了。
第四范式-表插入、删除、修改数据时,不传递未修改的数据。其他表(子集)修改数据设计到表依赖的索引时要传递修改
//falsesql.update(dto);//trueDto new =new Dto();new.setChangeData(dto.getChangeData());sql.update(new);
第五范式(完美范式)-表的数据仅含有其他表的数据(子集)的主键。查询相关数据时要连表查询,表基本变成索引表(字典表)。ps.每次新增要新增其他子集表!!
TABLE{TNO,USERNO,CARNO}
实际上
因为需求的多变性,除非一些大型的不思进取的项目,基本都不会整个项目符合第五范式,顶多某一部分用了字典表。而每次新增都要新增其他子集表,给数据库带来极大压力。
故第五范式淘汰。总结,字典表可小功能实现,不要求到整个项目。
因为表插入、删除、修改数据时,不传递未修改的数据可以用代码控制,而其他表(子集)修改数据(表依赖的索引)时要传递修改到表,则同样给数据库带来一部分压力,而且为什么不借鉴第六范式,外键为其主键,规定其不可修改,那么就不存在传递修改到表。
故第四范式扑街。总结,用代码控制插入修改删除的传递,外键通过不可变和数据一致性来取消使用。
因为现在过量设计的原因,能冗杂就冗杂,例如一个用户表一个文章表,文章必显示用户昵称头像,难道还要再查一次用户数据?
故第三个半范式牺牲。总结,过量设计,适当冗杂。
因为涉及到时间排序查询时,给时间做索引基本不会起作用,依然是全表查询,所以整条数据都依赖时间的时候,不给时间加索引。
故第三范式死不瞑目。总结,索引设计要合理。
也就是说我们设计数据库,符合第一第二范式就是一个合格的基本设计了。给表加主键!而其他的地方都是我们优化的点!
二 常用的的优化
字段固定长度,尽可能短。
可确定值设计为enum性,如男女省份等(快是快了,但是要改的话就麻烦了,所以不建议)
使用not null(null,empty并不是不存数据,null存了null数据,empty则存相应类型的默认值,那设置为null还要在程序做个判断多麻烦啊)ps.mybatis返回自动过滤null,所以java接触到这情况很少。但是其他语言有啊。
水平划分。
垂直划分。
大数据保存地址。
不使用Distinct,用Group By,exist 代替
批量操作,不是存储过程那种批量操作。(查询返回list,插入参数list)
查询不用select*
查询一个时,使用limit 1.
查询条件先索引再让容易过滤的过滤。
时间的比较,远比时间转为毫秒比较慢。
多表查询用join不用子查询
不用order by rand()(这个是全查完在重排,正常是边查边重排)
启动慢查询日志。
启动查询缓存
更换数据库引擎。(到了这步,还不如重新设计)
读写服务分离。
三 索引设计
如何建立索引一定会用到explain命令,查询性能分析,以前写过,现在就不说了。
https://www.cnblogs.com/ydymz/p/9167734.html
https://www.cnblogs.com/ydymz/p/9167637.html
而索引的设计只要绕开索引失效的情况,而索引失效的情况explain的返回就有
例如
MyISAM的索引长度超过1000就大幅降低性能,最好在500左右。(这个是真网上看来,自己试都没试)
建有索引的字段上尽量不要使用函数进行操作,除非做了函数索引。(不是所有数据库支持)
索引表应该小于数据表。查询索引表时间长于数据表,那还不如全表查询。这个时候说明你要重新设计表或者索引了(水平垂直划分,前缀索引)。
比较用了强制类型转换,索引不生效。
使用模糊查询,索引不生效。
使用<>,!=,not in,not exist等运算,索引不生效。
查询得到的结果太大,接近总量的30%(接近总量的1%都很恐怖了)
单独引用复合索引里非第一位置的索引列。
相关产品
-
但凡看过郭德纲相声的人都知道,郭德纲的学唱造诣较高,内容博杂而广泛,一言一行都散发着通达人情知晓任性的“俗人”魅力。而且,从微博上和钢丝日常交互的字里行间也能看出来,他对历史,不管是正史还是野史都熟知、了然于心,并且有自己独到的视角和见解。
-
蓝皮书指出,2013年,在“一中框架”的认同之下,两岸保持着频繁而有开创性的互动,切实推动了两岸文化产业合作在政策和产业实践层面更为务实的发展,使之成为两岸和平发展的重要标志之一。随着全球化进程的加速,两岸在文化产业领域的需求和利益关联更为紧密,交流与合作有待从区域性文化、经贸优势互补的自然需求,上升并作用于全球文化产业市场体系重构的努力与实践。
-
没错,这几天的体育界娱乐界很多大牌都在见到了心中的篮球之神而欢呼雀跃,明星秒变粉丝。这是乔丹在2004年之后再次来到中国,在深圳的季前赛亮相外,在上海进行的乔丹个人品牌30周年庆典才是重头戏,众多明星大腕赶去捧场,包括刘翔、李娜,还有参加上海大师赛的费德勒。
-
林否认犯案,向法官解释被害人和他的老婆是同学,二人认识已久,“不可能会骚扰她”,也辩称和被害人有业务关系,平时都有接触,当天没有发生不愉快的事,也没有性骚扰对方。
-
DS神韵的前进气格栅采用了DS全新家族式设计,官方称之为竖流式菱形中网,造型非常精致。此外该车还采用LED和激光技术的前大灯。据悉,长宽高分别为4210mm/1980mm/1350mm。
-
根据“洋葱日报社”消息:据业内爆料,除了开机画面外,格力手机还将在相册应用里预设董明珠的99张照片,照片时间跨度从董总16岁至今,99张照片囊括了董总的写真、自拍、大头照、证件照等各种形式。目前,格力内部还在就用户可不可以主动删除这99张照片进行激烈讨论。
-
2013年10月,工信部产业政策司发布了《车辆生产企业及产品公告》(第254批),万向集团子公司万向电动汽车有限公司位列其中,虽然这仅意味着该集团能够制造专用车,但其具备的整车制造能力和整车制造设备为万向进入电动乘用车领域创造了条件。
-
从原央视主持人到紫牛基金合伙人,作为两个慈善基金会的发起人,张泉灵深度参与了《免费午餐》和《瓷娃娃罕见病关爱中心》两个公益项目。节目中,张泉灵坦言自己参与过大量慈善捐款的抉择。在张泉灵的脑海里,捐款是一件非常纠结得选择,需要非常全面的综合考量。这样的观点也把本期《奇葩说》的辩题打开了一个新的角度——捐款给走投有路的人或是走投无路的人,并不是只有这两种考核标准。
热点资讯
- 哈罗青桔员工街头斗殴,青桔称遭对方打砸正配合调查2019-11-05
- 可爱中透着性感!飞轮海全员女装是怎么回事?pick吴尊女装你呢?2019-06-28
- 你见过最奇葩的游戏改编电影是什么?2019-11-09
- 美味的柿子饼对人体有什么功效与作用?2019-11-12
- 结对编程总结+git使用与GitHub代码管理——by林玉俊&唐宇涵2019-11-10
- 索尼实行审查新策略擦边球游戏或难登PS4平台2019-06-28
- 巴神质疑队友无能维埃拉:做好自己吧现在国米米兰还要你?_体育2019-11-10
- 乐视网再度涨停2019-11-08