muzirigel 2019-12-28
MySQL物理结构:
MySQL它是通过文件系统对数据进行储存和管理,从物理结构上分为日志文件和数据文件
日志文件:
日志文件记录了数据库操作的信息和一些错误信息,我们常用的日志文件有:错误日志、二进制日志、查询日志、慢查询日志、InnoDB引擎在线 redo日志和中继日志等。
错误日志(err log):
默认是开启状态的,如果是5.5.7版本以后的是无法关闭错误日志,错误日志它记录了运行过程中遇到的所有严重的错误信息,以及MySQL每次启动和关闭的详细信息。
默认的错误日志名称:hostname.err
错误日志所记录的信息我们可以通过log-error和log-warnings来定义,其中log-err是定义是否启用错误日志的功能和错误日志的存储位置,log-warnings是定义是否将警告信息也定义至错误日志中。log_error可以直接定义为文件路径,也可以为ON|OFF;log_warings只能使用1|0来定义开关启动
二进制日志(bin log):
默认是关闭状态,我们需要通过:log-bin=mysql-bin进行开启,其中mysql-bin是bin-log日志文件的basename,bin-log日志文件的默认名称:mysql-bin-000001.log
bin-log它记录了数据库中所有的DDL语句和DML语句,但不包括select语句内容,语句以事件的形式保存,描述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息,binl-og主要作用是用于恢复数据,因此bin-log对于灾难恢复和备份恢复来说至关重要。
如果是DDL语句则直接记录到bin-log日志,而DML语句必需通过事务提交才能记录到bin-log日志中
bin-log还可以用于MySQL的主从复制
主从复制原理:
通用查询日志(general query log):
默认是关闭的,由于通用查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响mysql的性能的。如若不是为了调试数据库的目的建议不要开启查询日志。
慢查询日志(slow query log):
默认是关闭的,需要通过设置:slow_query_log=ON进行开启。记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句
MySQL索引:
我们使用索引的目的就是在于:优化查询速度,索引是一种特殊的文件或者叫数据结构(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
索引是在储存引擎中实现的,不同的储存引擎就会使用不同的索引,默认是使用BTREE索引,
索引的分类:
单列索引 (常用):
普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
唯一索引:索引列中的值必须是唯一的,但是允许为空值,
主键索引:是一种特殊的唯一索引,不允许有空值。
组合索引(常用):
在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。
全文索引:
全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。
索引的使用:
创建索引:
1.CREATE
index
索引名 ON
表名(列名(长度))
删除索引:
<span lang="en-us" xml:lang="en-us">DROP</span>
<span lang="en-us" xml:lang="en-us">index </span>
<span lang="en-us" xml:lang="en-us">索引名 ON</span>
<span lang="en-us" xml:lang="en-us">表名</span>
查看执行计划:
只需在sql语句前加 EXPLAIN
索引的储存结构: