MySql概述及入门(二)


MySQL架构

  逻辑架构图:

        

  执行流程图:

        

        

MySQL的存储引擎

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

执行: show engines;

多存储引擎是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-error和log-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;

 

索引的存储结构

 

最新文章

  1. 当类型为dynamic的视图模型遭遇匿名对象
  2. 解决冲突-git入门教程
  3. vi/vim使用小结
  4. AX2012 DMF数据导入的问题
  5. python刷题专用函数。。
  6. HDOJ 1869
  7. iOS获取设备型号、设备类型等信息
  8. kettle实现文本文件数据抽取方法
  9. LeetCode之ReverseWorldString
  10. mysql 语句练习
  11. 84. 从视图索引说Notes数据库(下)
  12. IP查询接口
  13. 一张图让你明确Android Touch事件的传递机制
  14. python写mapReduce初步
  15. Django--CRM--modelformset的用法
  16. 我对android开发的一点小感悟小看法
  17. HDU 4920 Matrix multiplication(矩阵相乘)
  18. P3600 随机数生成器
  19. OpenCV人脸识别
  20. 【X240 QQ视频对方听不到声音】解决方法

热门文章

  1. 码云(gitee)配置ssh密钥
  2. Mysql百万数据量级数据快速导入Redis
  3. 全国疫情精准定点动态更新(.net core)
  4. [Python]获取win平台文件的详细信息
  5. LeetCode 218. The Skyline Problem 天际线问题(C++/Java)
  6. ionic2的返回按钮的编辑问题
  7. Go语言实现:【剑指offer】变态跳台阶
  8. ubuntu 18. root登录图形界面
  9. CVE-2019-0199:Apache Tomcat DDOS
  10. php 关于php创建 json文件 和 对文件增删改查 示例