Mysql学习笔记(一)

本文探讨了MySQL的发展历程,从IOE组件(IBM、Oracle、EMC)到Mysql的架构演变,包括单点到分布式、存储引擎的选择,以及SQL执行流程。重点讲解了缓存策略调整和优化技巧,如索引优化和函数使用。
摘要由CSDN通过智能技术生成

什么是去IOE:
IBM的服务器,Oracle的数据库、EMC的存储设备

Mysql相关时间点:
96年发布1.0,2000年开源、2004年引入InnoDB引擎、08年被sum收购、5.5版本InnoDB作为默认引擎。

mysql架构演变:
单点–>主从复制,读写分离–>分库分表,水平拆分.

mysql结构:
客户端连接器
连接池
系统管理和控制工具
sql接口–>解析器–>查询优化器–>缓存(默认禁用,8版本移除)
可插拔存储引擎
系统文件–>文件和日志

mysql相关文件
db.opt 字符集,校验规则相关
frm,表相关的元数据文件。
myd 存储引擎myisam专用,用来存放表数据
myi 存储引擎myisam专用,用来存放表索引。
ibd 存储引擎innodb专用,用来存放表数据和索引。
每一个innodb表对应一个.ibd文件(独立表空间),共享表空间用ibdata
pid文件.linux系统专用,用来存放线程编号
socket linux系统专用,

sql执行顺序(mysql5.7)
客户端–>查询缓存(命中直接返回)–>解析器–>解析树–>预处理–>新解析树–>查询优化器–>执行计划–>查询执行器–>引擎–>文件–>存入缓存–>返回结果

sql运行连接机制:
半双工机制,某一时刻,要么发送数据,要么接收数据。不能同时进行。类似早期的对讲机

线程状态:
show prcesseslist /show full processeslist
可用kill+线程id干掉线程。
主要信息:
user:启动线程用户
Host:发送请求的客户端
db:当前命令在哪个库执行
command:正在执行的操作命令,如createDB dropDb execute prepareadStatement,query,sleep,quit等。
state: 线程状态,如updating sleeping starting checking locked等。
info sql信息,要看完整的加full,默认100个字符

sql优化器解析肝优化:
等价变换优化,如5=5 and a>5–> a>5,ab>5 and a>5
基于联合索引条件位置优化,调用条件位置顺序以期索引生效。
优化函数,如innodb对min取索引最左边,max取索引最右边。myisam count(*)直接返回。limit提前终止查询,对in条件进行排序,等。

为什么mysql会默认禁用缓存,mysql8直接取消缓存
缓存存在严重的可伸缩性问题,很容易造成性能瓶颈,如在大量写操作的情况下,只要一条记录更新,会清空所有缓存,命中系很低,除非是静态表才适合缓存。
现今大多应用在应用层做缓存,效率是其好几倍,显得很鸡肋。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值