MySQL三范式
创始人
2024-05-29 22:55:38
  • 1、查询语句写的烂
  • 2、索引失效(数据变更)
  • 3、关联查询太多join(设计缺陷或不得已的需求)
  • 4、服务器调优及各个参数设置(缓冲、线程数等)

通常SQL调优过程

  • 观察,至少跑1天,看看生产的慢SQL情况。
  • 开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并将它抓取出来。
  • explain + 慢SQL分析。
  • show profile。
  • 运维经理 or DBA,进行SQL数据库服务器的参数调优。

总结

  • 1、慢查询的开启并捕获
  • 2、explain + 慢SQL分析(没索引的先建索引)
  • 3、show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况
  • 4、SQL数据库服务器的参数调优

数据库的分类

  • 关系型数据库:mysq/oracle/db2/informix/sysbase/sql server
  • 非关系型数据库:(特点:面向对象或者集合)
  • NoSql数据库:MongoDB(特点是面向文档)

1 表的设计合理化

1.1 为什么需要范式

一个软件项目基本都会用到数据库,项目开发前期分析客户的业务和数据处理需求,然后设计数据库的E-R模型图,确认需求信息的正确和完整。再就要将E-R图转换为多张表,表设计后,很可能结构不合理,出现数据重复保存,简称数据的冗余,这对数据的增删改查带来很多后患,所以我们需要审核是否合理,就像施工图设计后,还需要其他机构进行审核图纸是否设计合理一样。

如何审核呢?需要一些有关数据库设计的理论指导规则,这些规则业界简称数据库的范式。数据库范式为数据库的设计、开发提供了一个可参考的典范

1.2 三范式原理

通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解

第一范式: 1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解; (只要是关系型数据库都满足1NF)

第二范式: 2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;

第三范式: 3NF是对字段冗余性的约束,它要求字段没有冗余。没有冗余的数据库设计可以做到。

但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

1.3 什么样的表才满足三范式

表的范式,是首先符合1NF, 才能满足2NF,进一步满足3NF

1NF:即表的列的具有原子性,不可再分解,即列的信息,不能分解,只有数据库是关系型数据库
在这里插入图片描述
2NF:表中的记录是唯一的,就满足2NF,通常我们设计一个主键来实现
在这里插入图片描述
3NF:即表中不要有冗余数据,就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放
在这里插入图片描述在这里插入图片描述
反3NF:在表1->n的情况下,为了提高效率可能会在1这张表设计字段提速
在这里插入图片描述

相关内容

热门资讯

作文本的秘密   ▌马小江  一个周末的傍晚,我在小区广场散步,忽然听见有人叫我:“马老师好!”回头一看,原来是我...
中集集团于12月12日斥资32... .ct_hqimg {margin: 10px 0;} .hqimg_wrapper {text-a...
欧派家居股价较4月高点跌三成创... 欧派家居(603833.SH)创年内新低,实控人配偶增持。12月12日,欧派家居发布公告,当日,公司...
勇利投资委任安永为新核数师 .ct_hqimg {margin: 10px 0;} .hqimg_wrapper {text-a...
抗战老兵王祥海:日军都打到家门... 【抗战老兵王祥海:#日军都打到家门口了必须反抗#】#铭国殇砺锋芒##以国之名悼我同胞# “日军都打到...