ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MYSQL常见问题

2022-01-28 17:59:10  阅读:182  来源: 互联网

标签:常见问题 varchar 索引 Innodb Myisam 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中的语句。
  • 经常用在表连接的字段使用索引。

标签:常见问题,varchar,索引,Innodb,Myisam,MYSQL,日志,节点
来源: https://blog.csdn.net/Xiang_lhh/article/details/122704906

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有