数据库总结

 

1.三范式

  • 第一范式:强调列的原子性,每一列都不能再分。
  • 实体的属性完全依赖于主关键字。
  • 非主属性不依赖于其它非主属性。

 

2.innodb将自增主键存储在内存中,重启之后导致内存中最大自增id丢失。

 

 

3.ACID

  • A:原子性------一个事物的所有操作,要么都完成,要么都不完成。
  • C:一致性-----事物开启到事物结束,数据库的完整性不能被破坏。
  • I:隔离性------多个事物同事对数据库读写不受影响。
  • D:持久性----事物结束后,对数据库的修改是永久的。

 

4.char和varchar

  • char:固定长度。优点:效率高,缺点:占用空间,使用场景:存储密码。
  • varchar:可变长度。空间利用是优势

 

5.float和doouble

 

  • float存储8位十进制数,内存中占4个字节。
  • double存储16位十进制数,内存中占8个字节。

 

6.内连接,右连接,左连接

  • 内连接:inner join ;右连接:right join; 左连接:left join
  • 内连接把匹配的关联数据显示出来。
  • 左连接左边的表全显示出来,右边的表显示符合条件的数据
  • 右连接相反

 

7.索引实现

b+树 可以达到二分查找的性能

 

 

8.验证索引是否有效

 

explain select * from table where type = 1

 

 

9.事务

  • read-uncommited:未提交,可被其它事务读取。最低级别。
  • read-commited:一个事务提交后才能被其它事务读。(造成幻读,不可重复读)
  • pepeatable-read:可重复读,多次读取同一数据,其值都和事务开始的内容一致。(造成幻读)
  • serializable:序列化,最高级别。

 

脏读:一个事务能够读取另一个事务还未提交的数据。

不可重复读:在一个事务内,多次读同一数据。

幻读:同一事务内多次查询返回的结果集不一样。

 

 

10常用引擎

  • INNoDB:提供事务支持,提供行级锁和外键约束,处理大数据容量。缺点:不支持全文检索,启动慢,写操作不锁全表。
  • myiasm:不支持事物,不支持行级锁和外键,写操作锁全表,读操作多于写操作时首选。

 

11.行锁和表锁

  • myisam只支持表级锁,INNoDB支持表锁和行锁,默认支持行锁。
  • 表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低。
  • 行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高

 

 

12.乐观锁和悲观锁

  • 乐观锁:每次取数据时都认为别人不会修改,所以不会上锁。在提交数据更新时会判断有没有人去更新这个数据。
  • 悲观锁:每次取数据时都认为别人会修改,每次都会上锁。别人要想拿这个数据就会被阻止,直到锁释放。

 

13.排查问题的手段

 

  • 使用 show processlist 命令查看当前所有连接信息。
  • 使用 explain 命令查询 SQL 语句执行计划。
  • 开启慢查询日志,查看慢查询的 SQL。

 

14.性能优化

  • 为搜索字段创建索引
  • 避免使用 select *,列出需要查询的字段。
  • 垂直分割分表。
  • 选择正确的存储引擎。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值