MySQL概述及入门(二)

MySQL概述及入门(二)

MySql概述及入门(二)


MySQL架构

  逻辑架构图:

        MySQL概述及入门(二)MySQL概述及入门(二)

  执行流程图:

        MySQL概述及入门(二)

        MySQL概述及入门(二)

MySQL的存储引擎

查询数据库支持的存储引擎

执行: show engines;

MySQL概述及入门(二)

多存储引擎是mysql有别于其他数据库的一大特性,存储引擎是针对表的,MySQL 5.5之后,默认的存储引擎由MyISAM变为InnoDB。

InnoDB 引擎: 支持AUTO_INCREMENT(自增列),支持外键(FOREIGN KEY),创建的表的表结构存储在.frm文件中,优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大。

MyISAM 引擎: 曾经是MySQL的默认存储引擎,优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。

MySQL日志文件

MySQL通过日志记录了数据库操作信息和错误信息。常用的日志文件包括错误日志、二进制日志、查询日志、慢查询日志和 InnoDB 引擎在线 Redo 日志

日志刷新 :  mysql> FLUSH LOGS;

        shell> mysqladmin flush-logs

        shell> mysqladmin refresh

错误日志 : 默认是开启的,而且从5.5.7版本以后无法关闭错误日志,它记录了MariaDB/MySQL服务启动和停止的信息,还记录了mysqld实例运行过程中发生的错误事件信息。

       默认的错误日志名称:hostname.err , hostname表示当前的主机名

       如果不知道错误日志的位置,可以通过  show variables like 'log_error'; 来查看。

       错误日志所记录的信息是可以通过log-errorlog-warnings来定义的,其中log-error是定义是否启用错误日志的功能和错误日志的存储位置,log-warnings是定义是否将警告信息也定义至错误日志中。

 

二进制日志 : 以事件形式记录的,不是事务日志(但可能是基于事务来记录二进制日志) 默认是关闭的,需要通过配置:log-bin=mysql-bin 进行开启。

       其中mysql-bin是binlog日志文件的basename,binlog日志文件的名称:mysql-bin-000001.log

       binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容

       binlog还包括了每个更新语句的执行时间信息,binlog主要作用是用于恢复数据,因此binlog对于s灾难恢复和备份恢复来说至关重要

 

查询日志 :   默认情况下查询日志是关闭的。由于查询日志会记录用户的所有操作,其中还包含增删查改等信息,会影响mysql的性能

      如若不是为了调试数据库的目的建议不要开启查询日志。

 

慢查询日志 : 默认关闭的,需要通过设置slow_query_log=ON进行开启

        记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句

 

事务日志(redo log) :    InnoDB特有的日志 , 也叫redo日志。

       事务日志包括两部分:一是内存中的日志缓冲(redo log buffer),该部分日志是易失性的;二是磁盘上的重做日志文件(redo log file),该部分日志是持久的。

       文件名为"ib_logfile0"和“ib_logfile1”,默认存放在表空间所在目录。 还有一个日志文件叫undo 日志,默认存储在ib_data目录下。

 

MySQL索引

为什么使用索引 : 1 .使用索引的主要目的是为了优化查询速度

        2.索引可以帮助我们进行排序以避免以避免使用临时表

        3.保证数据的准确性 

什么是索引 : 通俗解释 索引就像是图书的目录,根据目录中的页码快速找到所需内容。

索引的类型:

    单列索引:

        普通索引:仅加速查询 最基本的索引,没有任何限制,允许在定义索引的列中插入重复值和空值 是我们大多数情况下使用到的索引。

        唯一索引:索引列中的值必须是唯一的,但是允许为空值,

        主键索引:是一种特殊的唯一索引,不允许有空值。

    组合索引: 将几个列作为一条索引进行检索,使用组合索引时遵循最左前缀集合

    全文索引: 全文索引(FULLTEXT)仅可以适用于MyISAM引擎的数据表;作用于CHAR、VARCHAR、TEXT数据类型的列。

索引的使用:

创建索引:

CREATE INDEX index_name ON table(column(length))

ALTER TABLE table_name ADD INDEX index_name ON (column(length))

 

CREATE UNIQUE INDEX index_name ON table(column(length))

CREATE FULLTEXTINDEX index_name ON table(column(length))

 

ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))

 

 删除索引:

drop index_name on healerjean;

alter TABLE users drop index name_index ;

查看索引:

show index from healerjean;

 

索引的存储结构

MySQL概述及入门(二)