欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库mysql逻辑架构分析

程序员文章站 2022-03-19 15:24:56
数据库性能1.cpu选择:计算密集型或者复杂SQL可以选择频率更高的,并发量大的可以选择核心数多的2.内存肯定是越大越好啦,但是如果你整个数据库就10G,你选择512G的内存,也就没那么重要了。。MySQL逻辑架构1.无论是命令行启动一个 “mysql> ”,输入命令,还是使用navicat这种连接工具,或者是使用编程语言,去操作mysql数据库,统一都是 客户端。2.连接器:建立连接、获取权限、维持和管理连接。* 修改用户权限后,已经连接的会话不会受到影响哦* 连接分为长连接...

数据库性能

1.cpu选择:
计算密集型或者复杂SQL可以选择频率更高的,并发量大的可以选择核心数多的
2.内存
肯定是越大越好啦,但是如果你整个数据库就10G,你选择512 G的内存,也就没那么重要了。。

MySQL逻辑架构

数据库mysql逻辑架构分析
1.无论是命令行启动一个 “mysql> ”,输入命令,还是使用navicat这种连接工具,或者是使用编程语言,去操作mysql数据库,统一都是 客户端。

2.连接器:建立连接、获取权限、维持和管理连接。
* 修改用户权限后,已经连接的会话不会受到影响哦
* 连接分为长连接和短连接,各有利弊,短连接不断创建销毁连接,存在开销,长连接可以复用连接,但是连接占据的资源要在连接释放后才会归还,因此会占据大量资源。解决:定期清理长连接,或者重置长连接里占用的资源
* 连接没有操作时会处于sleep状态,默认time out为8小时

3.缓存
不建议使用,8.0以后直接将缓存模块删除了,因为很大概率你辛辛苦苦存的数据,表一变动,所涉及到的缓存都是直接无效的,利用率极低

4.分析器
词法分析 跟语法分析,分辨你这一对字符串,想要干啥,有没有语法错误

5.优化器
分析器只是了解你要做什么,但是有可能有多种方法都能做,通过优化器选择一种最好的。

6.执行器
真正的去执行sql啦,这个时候才会去检查对表有没有权限,然后使用存储引擎提供的接口,去操作存放在磁盘上的数据。

tip:如果表不存在某个字段,是哪一步报错?
首先肯定不是执行器,因为字段不是数据,不需要执行器去执行才知道不存在,所以在分析器的时候
,可以知道字段是否存在。

存储引擎

上面的东西可以叫做服务层,搞了半天也就是他们都不接触真实数据的,存储引擎用来存储和处理数据文件的,插件式存储引擎

MYISAM

myd myi 两个文件
表级锁
支持地理空间函数和全文索引(但是后面版本的innodb也支持了,所以不能算是优势?)
适合非事务型应用,只读类的,比如日志?

Innodb

主流

行级锁

但是远远没有行级锁那么简单,举个例子:
事务A修改了一行数据 但是没有提交,此时从行级锁角度看,这行没法查看吧,但是事务B是可以查看的,不会阻塞,原因是MVVC多版本并发控制,undo.log记录了没有提交的事务,用来回滚,所以事务B读到的是undolog之前的版本的数据。

尽量使用独立表空间,首先,系统表空间无法简单的收缩文件,独立表空间可以通过optimize table来收缩,其次,系统表空间会有io瓶颈(毕竟用了同一个表空间),独立表空间可以多个文件刷数据

本文地址:https://blog.csdn.net/weixin_34431783/article/details/112566690

相关标签: 数据库 mysql