MySQL学习(二)

MySQL常用引擎比较

InnoDB引擎

1.InnoDB支持基于acid的事务,提供行级锁和外键的约束。
2.它是不会保存表的行数的,所以当进行 select count(*) from table 指令的时候,需要进行扫描全表。
3.由于锁的粒度小,写操作是不会锁定全表的,所以在并发度较高的场景下使用会提升效率的。
4.InnoDB 支持表锁和行锁,默认为行锁。

MyISAM引擎

1.不支持事务,不提供行级锁和外键的约束。
2.MyIASM 引擎是保存了表的行数,于是当进行 select count(*) from table 语句时,可以直接的读取已经保存的值而不需要进行扫描全表。
3.如果表的读操作远远多于写操作时,并且不需要事务的支持的,可以将 MyIASM 作为数据库引擎的首选。
4.MyISAM 只支持表锁。

几种锁的介绍:

  • 表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低。
  • 行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高。
  • 乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。
  • 悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻止,直到这个锁被释放。

mysql 问题排查的手段:

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

mysql 的性能优化

  • 表的设计合理化(符合3范式),添加默认值和注释。
  • 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]。
  • 选择正确的存储引擎。
  • SQL语句优化。
  • 对mysql配置优化 [配置最大并发数, 调整缓存大小]。
  • 读写分离。
  • 合理分表分库。
  • 针对不同的数据类型特点使用正确的硬件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值