更新时间:2021-02-18 02:07:39 来源:极悦 浏览1709次
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL作为目前系统开发中最常用的数据库之一,因为其速度、可靠性和适应性而备受开发者的青睐。然而为了避免我们在MySQL数据库开发中遭遇致命的错误,我们需要恪守MySQL数据库开发核心原则。以下所列出的5条MySQL数据库开发核心原则是所有MySQL数据库开发时应该遵守的。希望可以引起重视。
1.尽量避免在数据库中做运算
“使鸡司夜,令狸执鼠,皆用其能,上乃无事。”古人都早已参透各司其职,各尽其责的重要性,作为现代化的数据库开发人员,我们更应该让数据库做其本职工作,而不是”物尽其用”。所以,我们应该尽量避免在数据库中做一些运算,复杂运算转移到程序端CPU,那里才是它的战场。我们应该避免在数据库中使用复杂的运算函数,毕竟术业有专攻,这不是数据库的强项,处理复杂运算的任务就交给CPU好了。
2.尽量控制表字段数量
单表的字段数量不能太多,否则会影响数据库的优化。根据业务场景进行优化调整,尽量调整表字段数少而精,这样可以使得IO高效,能够快速的遍历全表,二区还能提高数据库的并发性。
通过特定标准来控制字段数量,按照单表1G体积,500W行数据量进行评估:顺序读1G文件需N秒,单行不超过200Byte,单表不超50个纯INT字段,单表不超20个CHAR(10)字段,建议单表字段数上限控制在20~50个。
3.平衡范式与冗余
数据库表结构的设计也讲究平衡,以往我们经常说要严格遵循三大范式,所以先来说说什么是范式。第一范式:单个字段不可再分。唯一性。第二范式:不存在非主属性只依赖部分主键。消除不完全依赖。第三范式:消除传递依赖。用一句话来总结范式和冗余:冗余是以存储换取性能,范式是以性能换取存储。所以,一般在实际工作中冗余更受欢迎一些。模型设计时,这两方面的具体的权衡,首先要以企业提供的计算能力和存储资源为基础。其次,一般互联网行业中都根据Kimball模式实施数据仓库,建模也是以任务驱动的,因此冗余和范式的权衡符合任务需要。例如,一份指标数据,必须在早上8点之前处理完成,但计算的时间窗口又很小,要尽可能减少指标的计算耗时,这时在计算过程中要尽可能减少多表关联,模型设计时需要做更多的冗余。
4.拒绝三个B
由于数据库的并发就像城市交通,呈非线性增长,这就要求我们在做数据库开发的时候一定要注意高并发下的瓶颈,防止因高并发造成数据库瘫痪。
这里的3B是指:
大SQL(BIG SQL):要减少
大事务(BIG Transaction)
大批量(BIG Batch)
5.尽量控制单表数据量
大家都知道单表数据量过大后会影响数据查询效率,严重情况下会导致整个库都卡住。一般情况下,按照一年内单表数据量预估:纯INT不超过1000W,含CHAR不超过500W,同时要尽量做好合理的分表,使单表数据量不超载,常见的分表策略有:通过USERID来分表(根据ID区间分表):在金融行业应用较多,用户量大、用户特征明显。按DATE分表(按天、周、月分表):在电信行业应用非常多,如用户上网记录表、用户短信表、话单表等。按AREA分表(省、市、区分表)。
实际上,这些MySQL数据库开发的核心原则或者说MySQL数据库开发的注意事项在网上有很多大同小异的版本,其实主要还是前辈用引以为鉴的历史事件得出的宝贵的经验教训。准确的来说,这些原则就是MySQL数据库开发的红线,一旦触及,可能会发生意想不到的后果。所以,小伙伴们请谨记这些MySQL数据库开发的核心原则,使得我们的MySQL数据库开发更加合理更加规范。在后面的MySQL教程中,对这些原则有很好的讲解。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习