博客
关于我
MySQL万字总结!超详细!
阅读量:790 次
发布时间:2023-02-11

本文共 951 字,大约阅读时间需要 3 分钟。

MySQL事务特性与优化

事务特性

事务管理数据库操作,确保一致性、隔离性、持久性和原子性。具体特性如下:

  • 原子性:事务要么全成功,要么全失败。
  • 一致性:事务前后数据状态一致。例如,转账前后总金额不变。
  • 隔离性:防止并发操作导致的数据不一致。
  • 持久性:提交后数据永久保存,防止故障丢失。

事务隔离级别

解决并发问题,防止脏读、不可重复读和幻读。MySQL支持四种隔离级别:

  • Serializable:严格控制事务,避免幻读。
  • Repeatable Read:默认隔离级别,防止不可重复读。
  • Read Committed:防止脏读。
  • Read Uncommitted:允许脏读。

索引优化

索引提升查询速度,常见场景包括查询、连接和排序字段。避免在以下情况建立索引:

  • 不常用字段
  • 表记录较少
  • 经常增删改的字段
  • 单位度不高的字段(如性别)
  • 计算字段

B+树结构

B+树是MySQL的索引结构,支持范围查询和高效插入。其特点是节点间通过指针连接,叶子节点存储数据。

存储引擎

MySQL支持InnoDB、MyISAM和MEMORY等引擎。InnoDB支持事务,MyISAM适合只读或小表,MEMORY完全在内存中。

InnoDB优点

  • 支持行级锁和外键。
  • 提供CRUD能力和崩溃恢复。
  • 自适应哈希索引,提升查询速度。

MyISAM缺点

  • 不支持事务和行锁。
  • 不具备崩溃恢复能力。
  • 不支持外键。

MVCC

多版本并发控制通过版本链和快照读避免幻读,适用于高并发场景。

版本链机制

  • 事务ID:记录当前事务。
  • 回滚指针:连接多个版本。
  • 主键:数据行唯一标识。

快照读与当前读

快照读读取历史版本,当前读读取最新数据,防止幻读。

查询优化

优化器通过重写、索引使用和分区来提升查询效率。使用EXISTS和IN提高性能,避免多次扫描。

分区表

将大表切分为多个小表,优化查询和维护。分区方式包括范围、列表和哈希分区。

优点

  • 减少I/O操作。
  • 提高查询效率。
  • easier维护和扩展。

缺点

  • 开销高。
  • 分区锁问题。
  • 维护复杂。

其它优化技巧

  • 使用explain分析查询。
  • mysqldumpslow分析慢查询。
  • 设置合理的slow_query_log阈值。

通过以上优化,可以显著提升MySQL性能,确保数据库稳定高效运行。

转载地址:http://usbfk.baihongyu.com/

你可能感兴趣的文章
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>