Posted in MySQL onApril 05, 2021
事务
事务就是一组sql语句,为了保证一组数据库操作,要么全部成功,要么全部失败。
事务是在引擎层实现的,也就是说并不是所有引擎都可以使用事务,MyISAM 就不支持事务,这也是为什么会被 InnoDB 取代的原因。
事务的特性 acid
-
原子性
事务要么全部执行成功,要么全部执行失败。在事务提交(commit)成功之后,所有的操作都生效,提交失败,所有的操作都会回滚。
-
隔离性
A 事务对数据库做的变更,在事务未提交之间,数据库中也看不到,B 事务中也看不到。 -
一致性
在事务执行的过程中,只要事务未提交,就不会改变数据库的状态。提交之后事务已完成,此时数据库状态发生变化。 -
持久性
事务一旦提交,对数据库的变更就会持久化到磁盘,即使数据库发生异常重启,数据也不会丢失。
隔离级别
- 读未提交
- 读已提交
- 可重复读(MySQL默认)
- 串行化
索引
-
普通索引:纯为了加速查询,可为空,可以重复值
-
主键索引:不可为空,不可以重复值
-
唯一索引:索引列的值必须唯一,允许空值
-
全文索引:用来查找文本中的关键字,而不是与索引中的值相比较
日志
1. 错误日志
默认打开,无法关闭;记录mysql服务的启停,以及中间出现的错误信息
2. 普通查询日志
默认不开启;记录了mysql运行的所有操作,无论是否成功
3. 二进制日志
默认不开启;记录数据库变化的情况,可以使用二进制日志删除的数据进行还原
使用mysqlbinlog命令来查看MySQL二进制日志
4. 慢查询日志
记录没有使用索引的查询语句,只记录成功的案例
.
主从复制 读写分离 还原备份
-
主从复制原理
首先需要两个及两个以上的MySQL服务器,分为主服务器和从服务器, 从服务器开启一个io线程到主服务器来获取二进制日志,主服务器开启一个dump线程来接待从服务器, 当从服务器将二进制文件取回去之后,开启一个sql线程来读取二进制日志,做到实时备份主服务器的数据
-
读写分离
主数据库处理事务性查询,主数据库写入数据 从数据库处理select查询,从数据库读出数据
-
还原备份
冷备和热备 冷备:停止MySQL服务后,去备份数据 热备:在mysql服务运行的情况下去备份数据;mysqldump\SQLyog等工具 备份的方法 完全备份 增量备份 差异备份 子主题 4 备份方案 1、每天全备(最省事,最消耗系统资源) 2、全备+增量 3、全备+差异 备份:mysqldump(mysqldump是热备、全备机制) 案例: 备份库: mysqldump -uusername -p'password' --databases databasename>/mysql/backup/...sql 备份表:mysqldump -uusername -p'password' databasename tablename>/mysql/backup/...sql 还原:mysql 案例: mysql -uusername -p'password' </mysql/backup/...sql mysqlbinlog 时间点 位置号
innodb存储引擎
-
支持事物
-
支持B+树
2.1)为什么innodb索引是B+树数据结构? 因为关系型数据库这种数据量大的索引能达到亿级别,为了减少内存的使用索引也会存储到磁盘上,B+树的所有的data域在叶子节点, 内部节点相对B树更小,会将所有的叶子节点用指针串起来,这样遍历叶子节点就能通过遍历获取全部数据,一次性读入内存的需要查找的关键字也就越多,减少了磁盘IO的次数。 但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况。 2.2)B+树叶子节点储存的是什么? 主键key 具体数据 比如说user_name是个索引,当执行该SQL:select * from user_info where `user_name` = 'xiaoming'; InnoDB 就会建立 user_name 索引 B+树,节点里存的是 user_name 这个 KEY,叶子节点存储的数据的是主键 KEY 在执行 select * from user_info where id = 5 这个语句时,InnoDB 就会查询这颗主键 ID 索引 B+树,找到对应的 user_name='Bob'。 (innodb为了节省资源,只有主键索引树的叶子节点存放了具体数据)
-
支持外键
-
5.6以上版本支持全文索引
mysql知识点整理
- Author -
卡尔西法大魔王声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@