cpa自己做网站,政务网站建设经验交流发言,做搜狗网站优化,网站集约化建设工作讲话1. mysql默认的事物级别 MySQL 默认的隔离级别是可重复读#xff08;REPEATABLE READ#xff09;。 PostgreSQL 中#xff0c;默认的隔离级别是读已提交#xff08;READ COMMITTED#xff09;
可重复读隔离级别是 MySQL 的默认隔离级别#xff0c;它具有以下特点#x…1. mysql默认的事物级别 MySQL 默认的隔离级别是可重复读REPEATABLE READ。 PostgreSQL 中默认的隔离级别是读已提交READ COMMITTED
可重复读隔离级别是 MySQL 的默认隔离级别它具有以下特点
事务读取的数据集是一个一致性视图consistent snapshot即事务开始时刻的数据状态。在同一事务中无论其他事务对数据的修改如何事务始终看到一致的数据快照。
事务期间读取的数据不会受到其他并发事务的修改影响。即使其他事务对数据进行了修改事务内部仍然能够读取到最初一致性视图中的数据。
事务在提交之前对数据的修改对其他事务是不可见的。只有当事务提交后其他事务才能看到该事务所做的修改。
可重复读隔离级别提供了较高的隔离性和数据一致性适用于大多数应用场景。然而由于事务期间持有锁的时间较长可能导致锁竞争和并发性能下降。如果应用需要更高的并发性能可以考虑将隔离级别调整为读已提交READ COMMITTED。
2. mysql的索引结构 MySQL 使用多种索引结构来支持高效的数据检索其中最常用的索引结构是B树索引。下面是 MySQL 中常见的索引结构
B树索引B树索引是 MySQL 最常用的索引结构。B树是一种平衡树结构它具有以下特点
支持快速的索引扫描B 树索引结构具有良好的平衡性和高度的平均查询性能。在 B 树中从根节点到叶子节点的路径长度相等或相差不大这使得索引扫描的平均时间复杂度为 O(log n)其中 n 是索引中的键值对数量。 所有数据都存储在叶子节点上非叶子节点仅用于索引和导航。 范围查询和排序性能优化 叶子节点按照键值的顺序形成一个有序链表可以支持范围查询。 B树索引适用于等值查询和范围查询并且对于大部分数据库工作负载都能提供高效的性能。 哈希索引哈希索引是基于哈希表实现的索引结构。哈希索引具有以下特点
使用哈希算法将键值映射到哈希表中的桶bucket。 哈希索引适用于等值查询但不支持范围查询。 哈希索引在内存中进行查找查询速度非常快但在磁盘上的存储和更新操作相对较慢。 全文索引全文索引是用于全文搜索的索引结构用于在文本数据中进行关键字搜索。全文索引具有以下特点
使用特殊的算法和数据结构来构建索引以支持文本匹配和搜索。 全文索引适用于模糊搜索和自然语言查询。 MySQL 提供了全文索引的支持例如使用 InnoDB 引擎的全文索引和使用 MyISAM 引擎的全文索引。
3. 事务特性 原子性(Atomicity)一个事务中的所有操作要么全部成功要么失败全部回滚不会结束在某个中间环节。原子性由undo log日志来实现 一致性(Consistency)事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。由其他三个特性及业务代码正确逻辑来实现 隔离性((Isolation)一个事务内部的操作及使用的数据对其它并发事务是隔离的并发执行的各个事务之间不能互相干扰。隔离性由MySQL各种锁以及MVCC机制来实现 持久性(Durable)一个事务一旦提交它对数据库中的数据的改变就应该是永久性的即使系统故障也不会丢失。持久性由redo log日志来实现
4. 隔离级别 InnoDB引擎定义了四种隔离级别级别越高事务隔离性越好但性能就越低 read uncommit(读未提交)事务A读取到了事务B已经修改但尚未提交的数据 read commit(读已提交)Oracle和SQL Server的默认隔离级别一个事务只能看见已经提交事务所做的改变 repeatable read(可重复读)MySQL的默认隔离级别无论事务B如何修改数据事务A内部相同查询语句在不同时刻查询出来的结果都是一致的即在第一次查询之后就不会发生变化(除非事务A更新了这行数据由快照读变为当前读) serializable(串行化) 所有事务对同一条数据的读和写只允许串行执行解决了脏读、不可重复读、幻读的问题
5 事务并发遇到的问题 脏写Dirty WriteSession A修改了Session B修改过但尚未提交的数据 脏读Dirty ReadSession A读取到了Session B已经修改但尚未提交的数据 不可重复读Non-Repeatable ReadSession A内部的相同查询语句在不同时刻读出的结果不一致不符合隔离性 幻读PhantomSession A读取到了Session B提交的新增数据不符合隔离性
参考文章 MySQL事务隔离级别与锁机制(一) https://zhuanlan.zhihu.com/p/591676550?utm_id0