2021-10-12数据库复习

本文探讨了MySQL中MyISAM和InnoDB引擎的区别,MyISAM适合读写频繁且对事务要求不高的场景,而InnoDB则适用于需要事务处理和高并发的环境。介绍了索引的类型和作用,强调了索引优化对于查询性能的重要性,以及数据库锁的概念和事务的四大特性。同时还提及了数据库设计的基本原则和分库分表策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL引擎的选择

MyISAM:不支持事务,不支持外键,支持全文检索和表级锁定,读写相互阻塞,读写速度快,节约资源,所以如果应用是以查询操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性,并发性要求不是很高,那么选择这个引擎是很合适的!!

InnoDB:是MySQL的默认存储引擎,由于InnoDB支持事务,支持外键,行级锁定,支持所有辅助索引(5.5.5后不支持全文检索)高缓存,所以用于对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,读写频繁的操作,那么适合选择,比如BBS,计费系统,充值转账等!!!

数据库的索引        

MySQL数据库中的索引是帮助MySQL高校获取数据的一种数据结构,索引的本质就是数据结构。

  • 普通索引
  • 唯一索引
  • 主键索引
  • 组合索引 将单列索引进行组合
  • 外键索引
  • 全文索引

如果一张表中有一列是主键列,那么会默认为其创建主键索引(主键列不需要单独创建索引)

show index from  查看索引

create index  索引名 on 表名(字段)

drop index 索引名 on 表名

ALTER TABLE 表名 ADD INDEX 索引名(字段); 普通索引

BTree

B+Tree特点

  • 非叶子节点只存储键值信息
  • 所有叶子节点之间都有一个连接指针
  • 数据记录都存放在叶子节点当中

优点:提高查询速度,减少磁盘io次数,树形结构较小

数据库最左匹配原则,索引的字段是可以任意顺序的。(联合索引)

如果条件中没有最左前缀,则无法命中原则。

数据库索引设计原则

  • 对查询频次较高,且数据量比较大的表建立索引
  • 使用唯一索引,区分度越高,使用索引的效率越高
  • 索引字段的选择,最佳候选列应当从where子句的条件中提取,如果where子句中组合比较多,那么应当挑选最常用,过滤效果最好的列的组合
  • 使用短索引,可以提升mysql访问索引的I/O效率

数据库的锁

事务的特性:

  • 原子性
  • 一致性
  • 隔离性  脏读 不可重复度 幻读
  • 持久性

锁机制:数据库为了保证数据的一致性,而使用各种共享的资源在被并发访问时变得有序所设计的一种规 则。

锁分类:

按操作分类:(可以体现在sql语句上)乐观锁(自己去实现,只有提交操作的时候检查是否违反数据完整性)悲观锁

共享锁:也叫读锁,针对同一份数据,多个事务读取操作可以同时加锁而不互相影响,但是不能修改数据记录。

  • start transaction 、commit 开启事务 提交事务
  • select 语句 lock in share mode  加共享锁行锁
  • 根据索引列查加共享锁,会锁住当前行,行锁。
  • 如果没有根据索引列查询加共享锁,会锁住当前表,表锁
  • 共享锁可以互相兼容

排他锁:也叫写锁。当前的操作没有完成之前,会阻断其它操作的读取和写入。

  • select 语句  for update; 查询加排它锁,其它事务不可以加其它锁

MyISAM锁(不支持事务,所以不需要开启事务,加锁即可,表级🔒)

  • lock tables 表名 read;加写锁,只支持写锁,所有连接只支持读数据,不支持修改
  • unlock tables;解锁的操作

范式级别越高,表与表之间的关系就越复杂

数据库表结构设计(http://open.yesapi.cn/list.htmlicon-default.png?t=L892https://open.yesapi.cn/list.html

数据库的分库分表策略

水平拆分 优点:不存在单库数据量过大,高并发的性能瓶颈,提高系统稳定性和负载能力

                不需要拆分业务模块

垂直拆分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值