高性能Mysql_part2 事务、表设计

本文探讨了数据库事务的四大特性:原子性、隔离性、持久性和一致性,并强调了设计高性能表结构的重要性。介绍了数据库设计的范式,以及其优缺点。同时提出了反范式设计,以应对性能需求。此外,分享了数据库优化规范,如统一存储引擎、字符集选择、禁用特定功能等。最后提到了多对多关系的处理方式,即通过中间表实现联合查询。
摘要由CSDN通过智能技术生成

事务与锁

事务的四个特性:

  1. 原子性:事务所有的操作,要么全部完成,要么全不完成,不会结束在某个中间环节
  2. 隔离性:当多个事务并发访问数据库中的同一个数据时,所表现出来的相互关系
  3. 持久性:事务完成之后,事务所做的修改持久化保存,不会丢失
  4. 一致性:事务开始之前和事务结束之后数据库的完整性限制未被破坏
    在这里插入图片描述

设计高性能的表结构

范式

设计数据库结构过程中所要遵循的规则和指导方法,有1/2/3/BC/4/5 NF六种范式
在这里插入图片描述
优点:避免数据冗余,减少数据库空间,数据变更速度快
缺点:范式等级越高,表的数量越多,获取数据时表关联过多,性能较差

反范式

范式设计的表无法满足性能需求时,需要根据业务场景,在范式的基础之上灵活设计

基础规范

  1. 回归存储的基本职能
  2. 查询时,尽量单表查询
  3. 杜绝大事务、大SQL、大批量、大字段等性能杀手
统一规范
  1. 默认存储引擎innodb
  2. 默认字符集utf8mb4
  3. 关闭大小写
  4. 开启per-table表空间
  5. ip用int unsigned存储,非char(15),INET_ATON/INET_NTOA
  6. 时间类型使用timestamp
禁用功能(这些非常影响性能,且不好排错)
  1. enum、set
  2. blob、text
  3. 视图、event
  4. 存储过程、触发器
  5. 禁用列为NULL
  6. 禁止varbinary、blob存储图片、文件等
命名规范

表名:

  1. 所有表名小写
  2. 不允许使用-、空格
  3. 不允许其他字符作为名称

多对多联合查询

增加一个中间表,记录两个表的联合关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值