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

mysql的体系结构

时间:2023-06-21 14:47:15浏览次数:45  
标签:文件 存储 log 数据库 引擎 mysql 体系结构

1. mysql的体系结构

目录

1.1. MySQL体系结构

体系结构

连接者:不同语言的代码程序和mysql的交互(SQL交互)

  • 1、连接池 管理、缓冲用户的连接,线程处理等需要缓存的需求
  • 2、管理服务和工具组件 系统管理和控制工具,例如备份恢复、Mysql复制、集群等
  • 3、sql接口 接受用户的SQL命令,并且返回用户需要查询的结果
  • 4、查询解析器 SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构)
  • 5、查询优化器 SQL语句在查询之前会使用查询优化器对查询进行优化
select id,name from user where age = 40; 
a、这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行age过滤 
b、这个select查询先根据id和name进行属性投影,而不是将属性全部取出以后再进行过滤 
c、将这两个查询条件联接起来生成最终查询结果
  • 6、缓存 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据
  • 7、插入式存储引擎 存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)

说明:

在Oracle 和SQL Server等数据库中,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。
用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。
甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。

1.2. 存储引擎

1.2.1. MyISAM存储引擎

由于该存储引擎不支持事务、也不支持外键,所以访问速度较快。因此当对事务完整性没有要求并以访问为主的应用适合使用该存储引擎。

1.2.2. InnoDB存储引擎

mysql 5.5版本以后默认的存储引擎
由于该存储引擎在事务上具有优势,即支持具有提交、回滚及崩溃恢复能力等事务特性,所以比MyISAM存储引擎占用更多的磁盘空间。因此当需要频繁的更新、删除操作,同时还对事务的完整性要求较高,需要实现并发控制,建议选择。

1.2.3. MEMORY

MEMORY存储引擎存储数据的位置是内存,因此访问速度最快,但是安全上没有保障。适合于需要快速的访问或临时表。

1.2.4. BLACKHOLE

黑洞存储引擎,写入的任何数据都会消失,可以应用于主备复制中的分发主库。

1.3. msyql的文件

1.3.1. 物理文件

物理文件包括:日志文件,数据文件,配置文件,pid文件,socket文件等

1.3.2. 日志文件

日志文件

  • error log 错误日志 排错 /var/log/mysqld.log【默认开启】
  • bin log 二进制日志 备份 增量备份 DDL DML DCL
  • Relay log 中继日志 复制 接收 replication master
  • slow log 慢查询日志 调优 查询时间超过指定值

-Error Log

log-error=/var/log/mysqld.log
  • Binary Log
log-bin=/var/log/mysql-bin/bin.log
server-id=2 5.7.x版本后
  • Slow Query Log
slow_query_log=1|0
slow_query_log_file=/var/log/mysql-slow/slow.log
long_query_time=3

1.3.3. 配置文件

/etc/my.cnf—>/etc/mysql/my.cnf—>/usr/etc/my.cnf—> ~/.my.cnf
如果冲突,以最后一个读取的为准
[mysqld]组中包括了mysqld服务启动时的初始化参数
[client]组中包含着客户端工具程序可以读取的参数,此外还有其他针对各个客户端软件的特定参数组等

1.3.4. 数据文件

1、.frm文件
不论是什么存储引擎,每一个表都会有一个以表名命名的.frm文件,与表相关的元数据(meta)信息都存放在此文件中,包括表结构的定义信息等。
2、.MYD文件
myisam存储引擎专用,存放myisam表的数据(data)。每一个myisam表都会有一个.MYD文件与之呼应,同样存放在所属数据库的目录下
3、.MYI文件
也是myisam存储引擎专用,存放myisam表的索引相关信息。对于myisam存储引擎来说,可以被缓存(cache)的内容主要就是来源于.MYI文件中。
每一个myisam表对应一个.MYI文件,其存放的位置和.frm及.MYD一样
4、.ibd文件和ibdata文件
存放innoDB的数据文件(包括索引)。innoDB存储引擎有两种表空间方式:独享表空间和共享表空间。
独享表空间:使用.ibd文件来存放数据,且每个表一个.ibd文件,文件存放在和myisam数据相同的位置。
共享表空间:使用.ibdata文件,所有表共同使用一个(或多个,自行配置)ibdata文件。

ibdata1:系统表空间(数据文件)undo 段
ib_logfile0   redlog文件  一组
ib_logfile1

5、db.opt文件    此文件在每一个自建的库里都会有,记录这个库的默认使用的字符集和校验规。

1.3.5. pid文件

pid文件是mysqld应用程序在Unix/Linux环境下的一个进程文件,和许多其他Unix/Linux服务端程序一样,它存放着自己的进程id

1.3.6. socket文件

socket文件也是在Unix/Linux环境下才有的,用户在Unix/Linux环境下客户端连接可以不通过TCP/IP网络而直接使用Unix Socket来连接mysql.

1.4. 区分数据库、数据库实例、数据库服务器

1.4.1. 数据库(database)

数据库(database):
操作系统或存储上的数据文件的集合。mysql数据库中,数据库文件可以是* .frm、*.MYD、*.MYI、*.ibd等结尾的文件,
不同存储引擎文件类型不同。

1.4.2. 数据库实例(instance)

由后台进程或者线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。
需要注意:数据库实例才是真正操作数据库的。
    
数据库和数据库实例的关系:
通常情况下,数据库实例和数据库是一一对应的关系,也就是一个数据库实例对应一个数据库;
但是,在集群环境中存在多个数据库实例共同使用一个数据库。

1.4.3. 数据库服务器(database server)

数据库服务器(database server):部署安装数据库实例的服务器。
mysql中的逻辑对象:
mysqld_process+memory+datafile|logfile|pidfile...--->库-->表-->记录(由行与列组成)

1.5. mysql 数据库的帮助

1、官档
2、man 文档
3、命令行下的帮助文件      --oracle命令行没有,需要去查官方文档
mysql > help;
mysql > help create table;
mysql> ? contents
        --分了很多类
   Account Management
   Administration
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Functions and Modifiers for Use with GROUP BY
   Geographic Features
   Language Structure
   Storage Engines
   Stored Routines
   Table Maintenance
   Transactions
   Triggers

mysql> ? Account Management    --一级一级的向内部查

mysql> ? CREATE USER

标签:文件,存储,log,数据库,引擎,mysql,体系结构
From: https://www.cnblogs.com/xulinforDB/p/17496159.html

相关文章

  • mysql的二进制日志和中继日志文件的分析、恢复、清理
    1.mysql的二进制日志目录1.mysql的二进制日志1.1.概述1.2.MySQL中二进制日志(binlog)3种不同的格式(Mixed,Statement,Row)1.2.1.Row1.2.2.Statement1.2.3.Mixed1.3.binglog格式设置1.4.二进制日志文件的清理1.4.1.自动清理binglog1.4.1.修改过期时间1.4.2.手动清除......
  • mysqlbinlog命令详解
    1.mysqlbinlog命令详解目录1.mysqlbinlog命令详解1.1.初步了解binlog1.1.1.binglog简介1.1.2.mysqlbinlog常见的选项1.1.3.binglog对性能的损耗1.1.4.binlog日志的使用场景1.1.5.常用的binlog日志操作命令1.1.5.1.查看所有binlog日志列表1.1.5.2.查看master状态1.1.5.3......
  • mysql日志基本概念和启用
    1.mysql日志目录1.mysql日志1.1.概述1.2.MySQL日志文件分类1.2.1.错误日志1.2.2.二进制日志1.2.3.通用查询日志1.2.3.1.定位查询慢的sql1.2.3.2.慢查询日志的启动和参数说明;1.2.4.慢查询日志1.2.5.Innodb的在线redo日志1.2.6.更新日志1.3.日志启动1.4.总结1.4.1.b......
  • MYSQL 8 一个实例打开的表被那些参数和资源限制 分析
    再开始这个问题之前,我们先的准备一下环境,mysql8.0278G内存 SSD磁盘4核心CPU。同时通过sysbench来对系统进行测试数据的填充。首先安装sysbench并通过下面的命令来对mysqltest数据库产生10000万张表。sudosysbench/usr/share/sysbench/oltp_common.lua--mysql-host=......
  • Win10本地计算机上的MySQL服务启动后停止,通用解决方案
    这问题一搜,CSDN都让删data文件夹????解决方案:1、查看启动错日志  很明显我这里是端口占用导致的(没动过配置文件,之前能用,突然起不来了,大概率是这个问题) 具体问题具体分析,搜报错信息比直接搜“MySQL服务启动后停止”靠谱一些......
  • mysql分页
    本来是基础知识,但是今天才发现有两种写法,之前一直用简写,两种方法[偏移量OFFSET ]和[取出最大数据条数LIMIT ]两个数字位置有所区别,特此记录:1.完全体写法,先写数据条数,再写偏移量也有很多其他数据库也支持这种写法SELECT*FROMtableLIMITrowsOFFSEToffset;......
  • oracle和MySQL区别在大数据上体现
    原文,https://blog.csdn.net/weixin_39569543/article/details/111090287结论:阿里java开发手册禁止三张表join大数据量下使用join导致数据冗余更大,MySQL处理不了过大的数据量,Oracle可以正常处理......
  • Mysql数据库5.6版本安装
    5.6的软件包创建管理组mysql,创建用户解压·mysql的5.6版本移动到指定位置修改目录所有者优化mysql命令检查mysql版本修改主配置文件初始化mysql生成mysql服务控制文件添加到系统文件设置开机自启动启动mysqld并查看状态设置登录数据库密码登录数据库创建数据库查看数据库创建数据库......
  • MySQL 关于缓存的 “杂七杂八”
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。你是否可以想象如果MYSQL没有了innodb_buffer_pool是什么样子的情况,本期需要说说MYSQL的缓存,已经如何使用他更加有效用或者说性......
  • MySQL HeatWave 被添加了机器学习,甲骨文认真了
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。在开始说这个问题前,我们先了解一下什么是heatWave,MySQLHeatWave是Oracle在2020年推出的一个新服务,为MySQL数据库提供高性......