首页 > 数据库 >mysql 体系结构

mysql 体系结构

时间:2023-09-11 16:33:55浏览次数:43  
标签:缓存 show MySQL 索引 InnoDB MyISAM mysql 体系结构

 mysql 数据库的体系结构如下图:

mysql 体系结构_缓存

1.连接器:主要负责客户端与数据库的连接

a.连接后没有任何动作,那么连接就处于空闲状态,show full processlist 进行查看

b.客户端连接数据库后会在一定时间范围内断开连接,具体时间可以进行查看

show variables like '%timeout%'

interactive_timeout:服务器关闭交互式连接前等待活动的秒数。

wait_timeout:服务器关闭非交互连接之前等待活动的秒数。

c.客户端连接数据库的连接数是有限制的,可以进行查看

show variables like '%max_connections%'

2.查询缓存:查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空,可以通过query_cache_type设置 。MySQL 8.0 版本直接将查询缓存的整块功能删掉了。

a.show variables like '%query_cache%'; //查看查询缓存是否启用,空间大小,限制等

b.show status like 'Qcache%'; //查看更详细的缓存参数,可用缓存空间,缓存块,缓存多少等 

3.解析器:对客户端发送的slq语法进行解析,生成‘解析树’,并检查sql 语法是否正确合法。

4.查询优化器: 根据“解析树”生成最优的执行计划,MySQL使用很多优化策略生成最优的执行计划

5.sql 执行器:判断对表的执行有没有权限以及是否触发执行等

6.存储引擎:负责MySQL中的数据的存储和提取,是与文件打交道的子系统,它是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎。

查看当前数据库支持的引擎信息:show engines

InnoDB和MyISAM是使用MySQL时最常用的两种引擎类型,区别如下:

a.事务和外键 InnoDB支持事务和外键,具有安全性和完整性,适合大量insert或update操作 MyISAM不支持事务和外键,它提供高速存储和检索,适合大量的select查询操作

b.锁机制 InnoDB支持行级锁,锁定指定记录。基于索引来加锁实现。 MyISAM支持表级锁,锁定整张表。

c.索引结构 InnoDB使用聚集索引(聚簇索引),索引和记录在一起存储,既缓存索引,也缓存记录。 MyISAM使用非聚集索引(非聚簇索引),索引和记录分开。 并发处理能力 MyISAM使用表锁,会导致写操作并发率低,读之间并不阻塞,读写阻塞。 InnoDB读写阻塞可以与隔离级别有关,可以采用多版本并发控制(MVCC)来支持高并发

d.存储文件 InnoDB表对应两个文件,一个.frm表结构文件,一个.ibd数据文件。InnoDB表最大支持64TB; MyISAM表对应三个文件,一个.frm表结构文件,一个MYD表数据文件,一个.MYI索引文件。从MySQL5.0开始默认限制是256TB。 

适用场景: MyISAM

不需要事务支持(不支持)

并发相对较低(锁定机制问题)

数据修改相对较少,以读为主

数据一致性要求不高


InnoDB

需要事务支持(具有较好的事务特性)

行级锁定对高并发有很好的适应能力

数据更新较为频繁的场景

数据一致性要求较高

硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,减少磁盘IO 

标签:缓存,show,MySQL,索引,InnoDB,MyISAM,mysql,体系结构
From: https://blog.51cto.com/u_11103985/7436661

相关文章

  • MySQL篇:第一章_软件安装和基本操作
    本篇安装软件NavicatePremium16破解版和phpstudy_prophpstudy_pro安装教程phpstudy官网:https://www.xp.cn/download.html下载等待下载完成后,双击可执行文件开始安装,选择自定义安装;等待安装完成即可拥有MySQL环境NavicatePremium16破解版安装教程官网地址:https://ww......
  • 【验】Postfix+Dovecot+MySQL搭建邮件服务器
    网上有很多使用Postfix搭建邮件服务器的文章,但目前貌似没有看到较为完整的一篇。本例将尝试在Ubuntu系统中使用Postfix+Dovecot+MySQL搭建邮件服务器。说到邮件服务器,网上有许多不同解决方案。Window操作系统下常见的邮件服务器有hMailServer、MailEnable、EVOMailServer、ApacheJ......
  • es与mysql的概念对比
        ......
  • linux服务器上的nginx服务、mysql服务和docker里面的php服务配合使用
    之前有个老项目是nginx1.22.0+mysql5.7+php5.6的环境在跑,也就是常说的lnmp环境。但是最近出了一个新的需求,这台服务器上要跑一个php7.3的项目,mysql5.7还可以用,nginx1.22.0也可以用,主要是php的环境要升级到7.3,那么方案应该怎么实施呢,大概有下面几个思路:1、再独立安装一个php7.3的......
  • JDBC 连接 MySQL 报错 Unknown system variable ‘query_cache_size‘
    官方说法:ThequerycacheisdeprecatedasofMySQL5.7.20,andisremovedinMySQL8.0.Deprecationincludesquery_cache_size.querycache在MySQL5.7.20已经过时了,并且在MySQL8.0版本中被移除了。所以要更新mysql驱动版本<dependency><groupId>mysql</groupId......
  • windows docker desktop安装mysql
    原文:https://www.jianshu.com/p/fd5d388dbf7d1.拉去mysql镜像dockerpullmysql:5.72.查看并启动镜像#列出已下载的镜像dockerimages#启动容器,挂载配置文件和数据dockerrun--namemysql-vD:/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf-vD:/docker/mysql/logs......
  • MySQL 8.0.23 新特性-不可见列
    在MySQL8.0.23之前,默认情况下,表中所有用户定义的列都是可见的。然而,从MySQL8.0.23开始,引入了一个名为InvisibleColumns的新功能,允许用户在表中隐藏特定的列。使用此功能,这些不可见的列不会出现在“SELECT*”查询中,从而提供了一种在常规查询结果中隐藏它们的方法。 若要查看不可......
  • docker安装mysql
    Docker环境下安装mysql总的来说,不推荐把mysql安装到docker下。首先是数据安全性问题:将mysql安装到docker容器,除了需要处理mysql的问题,还要考虑docker环境自身的问题,多了个docker,相当于平白无故多了一些风险项。其次是项目实施问题:首先,mysql大部分人会,但是不......
  • ZABBIX6.0监控MySQL
    官方文档:https://www.zabbix.com/cn/integrations/mysql部署过程:1.在MySQL数据库中创建监控账号并授权CREATEUSER'zabbix'@'%'IDENTIFIEDBY'Likun@123';GRANTUSAGE,REPLICATIONCLIENT,PROCESS,SHOWDATABASES,SHOWVIEWON*.*TO'zabbix'@�......
  • ClickHouse使用之二 ——整合mysql,实现数据库创建查询导出
    1.mysql创建一个用于clickhouse的账号mysql_clickhouse并且授权CREATEUSER'mysql_clickhouse'@'%'IDENTIFIEDBY'Password123!';GRANTALLPRIVILEGESON*.*TO‘mysql_clickhouse’@‘%';2. 使用mysql引擎创建一个clickhouse的外部表存在一个mysql的数据库:host:......