2020-08-24---mysql篇---杂项

本文详细介绍了MySQL的日志系统,包括参数文件、日志文件类型及其作用,强调了二进制日志在主从复制中的重要性。接着探讨了MySQL的索引结构,区分了聚集索引与非聚集索引,并讨论了不同类型的锁。还深入讲解了事务隔离级别,解释了ACID特性,如何避免脏读、不可重复读和幻读。最后,提到了MySQL的调优方法,特别是索引优化策略。
摘要由CSDN通过智能技术生成

Mysql相关

基础语法篇
  1. 创建数据库 (create database xxx) 后面可以更上 DEFAULT 属性 set 什么值
  2. 创建表格
CREATE TABLE 名字 (
	字段名 类型(限定符) 额外信息 ,  # 比如 AUTO_INCREMENT ,	primary key ,not null , DEFAULT  
);
  1. 查看表结构 ( DESC 表名)
  2. 增删改查…

稍微高级一点的 :

  1. 左连接
  2. 右连接
  3. 全连接
  4. 等值连接
  5. GROUP BY
  6. ORDER BY
  7. LIMIT
  8. HAVING

Like的通配符

MySQL中的常用统配符有三个:

​ %:用来表示任意多个字符,包含0个字符

​ _ : 用来表示任意单个字符

escape:用来转义特定字符

select username from user where username like '%pbo/_%' escape '/'; 

MySQL 文件系统

MySQL 有一套 完整的日志系统, 可以通过使用日志系统, 来控制 , 获取一些信息

默认为 INNODB的日志文件

参数文件

告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数。

MySQL数据库中的参数可以分为两类:

  1. 动态(dynamic)参数:可以在MySQL实例运行中进行更改
  2. 静态(static)参数:在整个实例生命周期都不能更改,就好像是只读的

关于对这些变量的获取, 可以进入数据库中, 使用 SHOW VARIABLES LIKE '%'; 来查询所有

对于动态变量可以支持在MySQL运行的时候进行修改 , 可以使用一下语句进行修改

SET [global | session] system_var_name = expr
SET [@@global. | @@session.] system_var_name = expr

日志文件

日志文件记录了影响MySQL数据库的各种类型活动。常见的日志文件有

  1. 错误日志
  2. 二进制日志
  3. 慢查询日志
  4. 查询日志

==== 错误日志: (默认开启)

对MySQL的启动、运行、关闭过程进行了记录。该文件不仅记录了所有的错误信息,也记录了一些警告或正确的信息。可以通过show variables like 'log_error’来定位该文件。默认情况下错误文件的文件名为服务器的主机名。

相关参数 : log_error 表示文件


==== 二进制日志 : (默认不开启) (可以用来搭建集群使用 (主从复制))

​ 记录了对MySQL数据库执行更改的所有操作,但是不包括select和show这类操作,因为这类操作对数据本身并没有修改。此外,二进制日志还包括执行数据库更改操作的时间等其他额外信息。

​ 默认不开启,需要手动修改配置文件参数来启动。

​ bin_log.index为二进制的索引文件,用来存储过往产生的二进制日志序号。如果超过二进制文件的最大值,则产生新的二进制文件,后缀名+1,并记录到.index文件。

注意 : 该参数是静态参数, 需要修改配置文件来启动 对应 数据库参数中的 log_bin log_bin_basename log_bin_index

二进制日志主要有以下几种作用:

恢复:某些数据的恢复需要二进制日志

复制:通过复制和执行二进制日志使一台远程的MySQL数据库(一般称为slave或standby)与一台MySQL数据库(一般称为master或primary)进行实时同步 (可以用来搭建集群)

审计:通过二进制日志中的信息来进行审计,判断是否有对数据进行注入的攻击

二进制日志的格式有三种,由binlog_format控制:STATEMENT、ROW和MIXED

STATEMENT : 在Master向Slave同步的时候, 会以原生SQL语句进行同步

ROW : 在Master想Slave同步的时候, 直接同步数据.

MIXED : 默认会以 STATEMENT 的方式记录,但在一些情况下可以自动的切换成 ROW 方式,比如执行用户自定义的函数;

相关参数 :

  1. log_bin 是否开启二进制日志 (未开启是 OFF) 开启的话 需要配置 存放地方 (比如 /var/lib/mysql/bin-log)
  2. log_bin_basename : log_bin 的附带品 , 如果不指定的话, 就是用log_bin 的文件
  3. log_bin_index (指定索引文件的位置)
  4. expire_logs_days : 删除超过这个变量保留期之前的全部日志

==== 慢查询日志 : (默认不开启) (用来断定一些消耗时间过长的语句)

帮助定位可能存在问题的SQL语句,从而进行SQL语句层面的优化。例如,可以在MySQL启动时设一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中。该阈值可以通过参数long_query_time来设置,默认值为10,代表10秒。 只会记录执行时间大于该阈值的SQL。

相关参数 :

  1. long_query_time : 定义慢查询的阈值, 超过这个时间的都称为 慢查询
  2. slow_query_log : 是否启动慢查询日志 : OFF 不启动 ON 启动

注意 : 在MySQL 5.1 开始 可以将慢查询的日志记录放入一张表 , 名为slow_log , 在mysql 中


==== 查询日志 : (可以追踪数据库查询过的语句) (默认不开启)

相关参数 :

  1. log_output : 这个是所有 log 都可以配置的. 使用log 输出的方式 : 默认是 FILE (文件) 可以修改成 TABLE (表格) , 会存放在mysql数据库的相关位置
  2. general_log : 是否开启查询日志
  3. general_log_file : 指定查询日志存放的位置 (如果log_output 不是 FILE 就没有用)

套接字文件

pid文件

表结构定义文件


Mysql索引结构
MYSQL的索引类型

其实索引类型 按大类的分 只有 : B-TREE 索引, HASH 索引 ,全文索引

对于 B-TREE索引, INNODB 默认使用的是 B+ 树作为实现 ,

在B-TREE 索引中, 有 普通索引 , 唯一索引 , 和主键索引 …

HASH 索引, 在INNODB 是不显式支持的, 但是INNODB中会有自动调优的时候使用hash索引 . 这个是无法认为控制的

全文索引 : 使用的是一个倒排索引的技术 … 这个技术 也是在 elast

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值