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 表名(列名(长度))

删除索引:

DROP index 索引名 ON 表名

查看执行计划:

只需在sql语句前加 EXPLAIN

索引的储存结构:

     

最新文章

  1. Laravel Predis Error while reading line from the server.
  2. PL/0与Pascal-S编译器程序详细注释
  3. Centos7最小化安装后(minimal)安装图形界面
  4. 九度OJ 1504 把数组排成最小的数【算法】-- 2009年百度面试题
  5. Linux Ubuntu上架设FTP
  6. C语言之头文件,static与const关键字
  7. SqlCommand和SqlDataAdapter有什么区别
  8. R语言写2048游戏
  9. Python一些方法的用法集锦
  10. Visual Studio 2012 和 SVN 结合实现版本控制 AnkhSvn
  11. js 获取 最近七天 30天 昨天的方法 -- 转
  12. hihocoder 1505
  13. JDBC数据库连接池之dbcp
  14. LeetCode算法题-Best Time to Buy and Sell Stock
  15. text2
  16. 了解一下 Linux 上用于的 SSH 图形界面工具
  17. K8S各知识点整理
  18. 检查WMI协议是否通的
  19. Django 改变xadmin后台英文为中文
  20. ext3, ext4 和 reiserfs 文件系统性能对比

热门文章

  1. spring boot 多数据源加载原理
  2. linux 搭建jenkins
  3. STM32 命名方法
  4. 仿快播APP源码
  5. 什么是 DQN
  6. Redis事务、持久化、发布订阅
  7. 20行Python代码爬取王者荣耀全英雄皮肤
  8. 深入浅出 JVM 系列(一)什么是 JVM?它处于什么位置?
  9. deepin idea2019注册码
  10. OpenJ_Bailian 7617 输出前k大的数