日志
binlog 二进制日志
- mysql级别的日志。
- 基于redolog和undolog,但是一份二进制文件。
- 记录了所有DDL和DML操作语句。类似Redis中的AOF日志。
redolog 前进日志
- mysql写入过程中,会将数据变更先写入redo日志,然后再变更内存中数据,最后定时同步到硬盘中。redo日志会及时写入硬盘,写的过程中使用了连续写入和内存映射技术。
- 默认满16MB写一次。
- 如果在未及时放到硬盘中服务器宕机了,内存数据可能丢失。重新启动服务后,服务会检查redo日志,如果其中有记录,会依据记录变更数据。
undolog 回滚日志
- 支持事务回滚的快照数据。
relaylog 中继日志
- relaylog日志是在搭建主从集群时,从服务同步主服务数据时使用的。
- 主服务将binlog日志传递给从服务后,从服务改名为relaylog日志,然后依旧relaylog日志中数据完成数据变更。
- 是为了降低网络波动对数据同步的影响。
索引
1. mysql中B+索引是什么?
- B树类似平衡二叉树,每个节点即保存key也保存数据。
- B+树中只有叶子节点储存数据,其余非叶子节点只储存key。
- mysql中是按照页来整合数据的,所以B+树中的各个节点就是各个页。
- B+树中非叶子节点中储存key和在key对应范围下的下一级页的地址。
- 这里每个节点是一个页,是为了从硬盘上读写数据快,降低了寻址时间。
2.B+索引是如何发挥作用的?
- 这是因为加入索引后,可以将数据排序,在有顺序的集合中查询就可以添加不同的查询算法,加快查询效率。
- 接下来有排序就一定排序规则,是升序还是降序,也就是数据是从大到小还是从小到大。不同的排序方式对查询效率有一定的影响。
SQL
- 查询索引:
SHOW INDEXES FROM <table-name>;
返回值中包括Collation列,这一列的值如果是A就是升序,如果是D就是降序。
- 添加升序索引
CREATE INDEX <index-name> ON <table-name> (<columns-name> <index-type>);
key | value |
---|---|
index-name | 索引名称 |
table-name | 数据表名称 |
columns-name | 数据字段名称 |
index-type | 排序类型,ASC:升序 ;DESC:降序 |