MySql教程

MYSQL常见问题

本文主要是介绍MYSQL常见问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

MYSQL主从复制原理

主:将修改数据的sql语句放进binlog中。
从:

  1. 开启从模式之后,负责从master节点中拉取binlog。
  2. 从数据库拿到binlog后,执行sql语句。

MYSQL中Myisam和Innodb有什么区别

  • Innodb支持事务,Myisam不支持事务。
  • Innodb支持行级锁,Myisam支持表级锁
  • Innodb支持外键,Myisam不支持外键

Innodb引擎四大特性

  • 插入缓冲
  • 二次写
  • 自适应哈希索引
  • 预读

哪一种驱动count(*)更快

Myisam更快,会维护一个计数器,可以直接调取。

char和varchar有什么区别

char是固定长度类型
varchar是变长类型。

例如:

varchar(50)表示最长不能超过50,varchar(50)和varchar(100)存储hello字符串长度一样。

int(20)中20的含义

20表示显示最大的宽度,如果不够会补齐。不会影响存储的范围。

Mysql有多少种日志

  • 错误日志:记录执行出错的信息
  • 查询日志:记录所有对数据库请求的信息
  • 慢查询日志:设置一个阈值,将执行时长超过这个阈值的所有语句记录
  • 二进制日志:记录对数据库执行更改的所有操作
  • 中继日志:用于给slave回复数据
  • 事务日志:重做日志redo和回滚undo

四种隔离级别

  • 读取未提交数据
  • 读取已提交数据
  • 可重复读数据
  • 可串行化

binlog的日志录入格式

  • statement:每一条修改数据的sql都会记录在binlog中
  • row:不记录上下文信息,只保存哪一条记录被修改
  • mixedlevel:前两种模式的中间态

什么是事务

事务是满足acid特性的一组操作。

acid

  • a:原子性
  • c:一致性
  • i:隔离性
  • d:持久性

Myisam和Innodb的区别

Myisam

  • 没有事务
  • 只读类应用
  • 做很多count计算

Innodb

  • 支持事务
  • 支持行锁
  • 有acid的特性

索引使用的场景

  • 对于比较小的表,没有必要建立索引。
  • 对于中等大小的表,建立索引有效
  • 对于大型的表,建立索引查询会加快速度,但是也会增加维护的时间,每当增删改一条数据时,还要自动维护这个表数据。

B-Tree

  • 所有节点具有相同的深度。
  • 一个节点的所有的key从左到右非递减的顺序排列。
  • 如果一个指针指向的key大于keyi小于keyi+1,所以指针指向的该节点中的所有key都是在keyi和keyi+1之间。

B+Tree

与B-Tree不同的是

  • 每个节点的上限是2d不是2d+1,d是节点的出度,也就是最多指向的key值。
  • 节点不存储data,只存储key。
  • 叶子结点不存储指针。

Innodb使用的B+Tree,分为主索引和辅助索引。

主索引记录着完整的data,这种索引叫做聚簇索引,因为一个表不能把一条数据存储在两个不同的地方,所以一个表中只能有一个聚簇索引。

索引的优点

  • 创建唯一索引,保证索引字段唯一性。
  • 加大检索的速度

索引的缺点

  • 创建索引,随着数据量的增大,创建索引和维护索引的时间会增大
  • 索引占据物理空间,聚簇索引占据的空间会更大。
  • 对数据库进行增删改时,也要随之维护索引,需要额外的开销。

索引失效

  • 条件语句中有or
  • like中%在开头
  • 如果条件中有字符串,则需要用引号括起来,否则不会使用索引

那种字段适合建立索引

  • 经常出现在where、order by、group by中的语句。
  • 经常用在表连接的字段使用索引。
这篇关于MYSQL常见问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!