0
点赞
收藏
分享

微信扫一扫

在没有硬盘的情况下进行电脑数据迁移

兔八哥软件爱分享 2024-08-07 阅读 27

MySql

事务ACID

原子性

事务是不可分割的最小单元,一个事务的若干sql操作。要么统一成功,要么统一失败。(redoLog)

持久性

数据库的数据在宕机,丢失数据的情况下。可以回滚数据,这由mysql的日志完成(redoLog)

隔离性

两个事务的操作,应该互不干扰。一个事务,不会对另一个事务照成干扰。(锁)

一致性

一个事务执行前后并不会破坏数据库的一致性。比如一张表的name字段是唯一的,事务执行后,并不对name字段的唯一性造成破坏。(undoLog)

RedoLog和BinLog的区别

使用情景

binlog 主从复制,容灾备份
redolog 维持事务的一致性ACID

记录形式

binlog 有三种格式的日志保存log
redolog 纯物理记录日志

记录时机

binlog 每条sql都会记录
redolog 只有事务执行完毕才会保存日志

MYSQL锁的算法

行锁

Record Lock

单个行上锁

GapLock

间隙锁,锁定一个范围。但不包括记录本身。

Next-Key Lock

范围锁 相当于 Record Lock + GapLock(包含记录本身)

MySQL锁的问题

脏读

事务A读了两次,事务B的还没提交,结果事务A读的两次不一致。

不可重复读

事务A两次读取的途中,事务B修改了一行数据。

幻读

事务A两次读取的途中,事务B新增了一行数据。

MVCC

MVCC多版本并发控制,是为了解决事务操作中并发安全性问题而诞生的一种技术。

MVCC 主要解决了三个问题

1、采用乐观锁的机制,降低死锁概率。

2、解决一致性读的问题。事务开始到结束都读的同一份数据。

3、解决读写并发阻塞问题。提升数据并发处理能力。

事务的隔离级别

读已提交

TODO 原理(加的什么锁)

读未提交

TODO 原理(加的什么锁)

可重复读

TODO 原理(加的什么锁)

串行化

TODO 原理(加的什么锁)

效果

MySQL的优化

架构设计层面的优化

主从复制
读写分离
分库分表
引入缓存

SQL优化

通过慢查询日志定位SQL语句
通过explain语句分析SQL语句
改SQL

例子:https://www.bilibili.com/video/BV1fM4m127tb/?spm_id_from=333.1007.top_right_bar_window_history.content.click

思想:面对大批量数据排序。只排序id再查全部数据,比全部数据一股脑排序性能更好。

因为:mysql分为服务层和存储引擎层。如果把所有数据放在mysql服务层会导致mysql压力过大。把单独的id放在服务层排序。压力会小很多。

举报

相关推荐

0 条评论