首页 > 数据库 >第一章 MySQL体系结构和存储引擎

第一章 MySQL体系结构和存储引擎

时间:2024-06-07 21:56:28浏览次数:40  
标签:存储 1.3 数据库 第一章 引擎 MySQL 接字 体系结构

1.1 定义数据库和实例

数据库:物理操作系统文件或其他形式文件类型的集合 实例:MySQL数据库由后台线程以及一个共享内存区组成 在MySQL数据库中,实例与数据库的关系通常是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例 MySQL数据库实例在系统上的表现就是一个进程 MySQL读取配置文件的顺序 /etc/my.cnf => /etc/mysql/my.cnf => /usr/local/mysql/etc/my.cnf => ~/.my.cnf 如果多个配置文件中都有同一个参数,MySQL会以最后一个配置文件中的参数为准 linux下,配置文件一般放在/etc/my.cnf windows下,配置文件后缀名可能是cnf也可能是ini,可通过mysql--help找到类似内容  

1.2 MySQL体系结构

MySQL由以下几部分组成:
  • 连接池组件 Connectors:JDBC ODBC NET PHP Python等
  • 管理服务和工具组件 management service&utils
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲组件
  • 插件式存储引擎
  • 物理文件
MySQL数据库区别于其他数据库最重要的一个特点就是其插件式的表存储引擎 需要注意的是,存储引擎是基于表的,而不是数据库  

1.3 MySQL存储引擎(了解)

OLTP(OnLine Transaction Processing)系统是实时事务处理系统,主要用于处理大量的随机的、高频率的、低复杂度的事务。OLTP系统的典型应用场景是银行、证券、保险等金融行业,以及电商、物流等领域的业务系统。OLTP系统要求高并发、强一致性、低时延,因此通常采用关系型数据库(如MySQL、Oracle等)作为数据存储。 OLAP(OnLine Analytical Processing)系统是用于分析数据的系统,主要用于支持复杂的分析性查询,提供决策支持。OLAP系统的典型应用场景是市场分析、客户关系管理、财务分析等。OLAP系统要求支持多维度分析、灵活的查询、自由的探索,因此通常采用数据仓库(如Star Schema、Federated Schema等)作为数据存储。 1.3.1 Innodb存储引擎 Innodb存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用 特点是行锁设计、支持外键、并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁 Innodb通过使用多版本并发控制(MVCC)来获得高并发性,并实现了四种隔离级别。默认为可重复度(repeatable read)。 同时使用一种被称为next-key locking 的策略来避免幻读现象的产生。 除此以外,InnoDB还提供了 插入缓冲(insert buffer),二次写(double write),自适应哈希索引(adaptive hash index),预读(read ahead)等高性能和高可用的功能。 对于表中的数据,InnoDB存储引擎采用了聚集的方式,因此每张表的存储都是按照主键的顺序进行存放。如果没有显示的在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键。

1.3.2 MyISAM存储引擎

MyISAM存储引擎不支持事务,不支持行锁,只支持表锁,支持全文索引。主要面向一些OLAP的应用。 MySQL5.5.8之前MyISAM存储引擎是默认的存储引擎。另外,MyISAM存储引擎另一个与众不同的地方是它的缓冲池只缓存索引文件,而不缓冲数据文件。 MyISAM存储引擎表由MYD和MYI组成,MYD存放数据文件,MYI存放索引文件。

1.3.3 NDB存储引擎

NDB存储是一个集群存储引擎,特点是数据全部放在内存中,因此主键查找的速度非常快,并且通过添加NDB数据存储节点可以线性地提高数据库性能,是高可用、高性能的集群系统 NDB存储引擎的连接操作是在MySQL数据库层完成的,而不是在存储引擎层完成的。这意味着,复杂的连接操作需要巨大的网络开销,因此查询速度很慢。

1.3.4 Memory存储引擎

Memory存储引擎将表中的数据存放在内存中,如果数据库重启或者发生崩溃,表中的数据都将丢失。适用于存储临时数据的临时表 。默认使用哈希索引,而不是B+树索引。 Memory存储引擎速度上非常快,但在使用上有一些限制,比如,只支持表锁,并发性能较差,并且不支持TEXT,BLOB列类型,并且在存储变长字段(varchar)时是按照定长字段(char)的方式进行的,会产生内存的浪费。 MySQL数据库使用Memory存储引擎作为临时表来存放查询的中间结果集,如果中间结果集大于Memroy存储引擎表的容量设置,又或者中间结果含有TEXT或BLOB列类型字段,则MySQL数据库会把其转换到MyISAM存储引擎表而存放到磁盘中。MyISAM不缓存数据文件,因此这时产生的临时表的性能对于查询会有损失

1.3.5 Archive存储引擎

Archive存储引擎只支持插入和查询操作,从MySQL5.1开始支持索引; Archive存储引擎使用zilb算法将数据行进行压缩后存储,压缩比一般可达1:10; Archive存储引擎非常适合存储归档数据,如日志信息; Archive存储引擎使用行锁来实现高并发的插入操作,但是本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能。

1.3.6 Federated存储引擎

Federated存储引擎表并不存放数据,它只是指向一台远程MySQL数据库服务器上的表 Federated存储引擎只支持MySQL数据库表,不支持异构数据表

1.3.7 Maria存储引擎

Maria存储引擎是新开发的引擎,设计目标主要是用来取代MyISAM存储引擎,成为MySQL的默认存储引擎 Maria存储引擎的特点是支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全选项,以及更好的BLOB字符类型的处理性能

1.3.8 其他存储引擎

除了以上7中存储引擎外,MySQL数据库还有很多其他的存储引擎,包括Merge、CSV、Sphinx和Infobright  

1.4 连接MySQL

1.4.1 TCP/IP

TCP/IP套接字方式是MySQL数据库在任何平台下都提供的连接方式 命令:mysql -h address -u username -p password 在通过TCP/IP连接到MySQL实例时,MySQL数据库会先检查一张权限视图,判断发起请求的客户端IP是否允许连接到MySQL实例,该视图在MySQL架构下,表名为 user

1.4.2 命名管道和共享内存

在Windows 2000、Windows XP、Windoes 2003和Windows Vista以及在此之上的平台上,如果两个需要进程通信的进程在同一台服务器上,可以使用命名管道。在MySQL数据库中须在配置文件中启用--eanble-named-pipe选项 在MySQL4.1之后的版本中,MySQL还提供了共享内存的连接方式

1.4.3 Unix域套接字

在Linux和Unix环境下,可以通过使用Unix域套接字进行连接 Unix域套接字不是网络协议,所以只能在MySQL客户端和数据库实例在一台服务器上的情况下使用 用户可以在配置文件中指定套接字文件的路径,如--socket=/tmp/msyql.sock 当数据库实例启动后,通过 " show variables like 'socket' " 命令来进行Unix域套接字文件的查找 获得Unix域套接字文件后,通过 “mysql -udavid -S + 套接字文件地址” 进行连接                

标签:存储,1.3,数据库,第一章,引擎,MySQL,接字,体系结构
From: https://www.cnblogs.com/Esummer/p/18237922

相关文章

  • Mysql阶段三总结
    Mysql阶段三总结触电器触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。MySQL从5.0.2版本开始支持触发器。*创建触发器*在MySQL中创建触发器通过SQL语句CREATETRIGGE......
  • Mysql阶段二总结
    Mysql阶段二总结文章目录Mysql阶段二总结左外连接右外连接合并查询数据纪录子查询当我们在查询数据时,要求返回所操作表中至少一个表的所有数据记录,通过SQL语句“OUTERJOIN…ON”来实现。外连接数据查询语法形式如下:SELECTfield1,field2,…,fieldnFRO......
  • Mysql 8.4.0 结合 Docker 搭建GTID主从复制,以及传统主从复制
    注意:本教程不适用旧版本,Mysql8.4.0和旧版本,主从复制相关命令有所变化,具体区别请看文末参考软件版本Docker:26.1.3Mysql:8.4.0 GTID主从复制1.准备主从两台服务器2.两台服务器分别创建DockerCompose文件services:mysql:image:mysql:8.4.0ports:-"3......
  • linux安装mysql8并配置主从
    服务器10.213.3.68DBmaser10.213.3.69DBslave都安装mysql8安装包,解压mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz[root@DB-mastermysql8]#lsbindocsincludelibLICENSEmanREADMEsharesupport-files优化过的配置文件[mysqld]server-id=1log-bin=mys......
  • Mysql基础进阶速成2
    看着篇文章之前先看我的前一章:MySQL基础进阶速成1函数:每个字段使用一个函数:select+函数(字段名)+from+表名upper:将字符串中的字母大写lower:将字符串中的字符小写max:得到最大值min:得到最小值count:计数avg:平均数length:获取字符串长度........selectupper(name)fro......
  • MySQL随笔
    1、隔离级别innoDB通过间隙锁锁定查询范围避免被其他事物修改未提交读(导致脏读)、已提交读(导致不可重复读)、可重复读(mysql默认,导致幻读)、串行化 脏读:事物执行的过程读到其他事物未提交的数据不可重复读:事物a在多次读取某数据时,事物b进行了修改,导致食物a两......
  • mysql8 无法连接navicat问题
    1、修改MySQL的配置文件(my.cnf或者my.ini),在[mysqld]部分添加或者修改default_authentication_plugin=mysql_native_password。重启mysql服务2、创建或修改用户并设置密码:如果您还没有 root 用户从任何主机连接的权限,您需要首先以具有足够权限的用户(通常是本地 root 用户)登录......
  • MySQL中InnoDB引擎行数据过大对B+树存储的影响
    效率工具推荐一个程序员常用的工具网站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。小报童专栏精选Top100推荐一个小报童专栏导航站:小报童精选Top100(http://xbt100.top),收录了生财有术项目精选、A......
  • ubuntu 22.04 安装MySQL8后的基本设置
    安装sudoaptupdatesudoaptupgradesudoaptinstallapache2mysql-serverphplibapache2-mod-phpphp-mysql初始化配置MySQL初始化配置以及设置root密码初始化MySQL安全配置sudomysql_secure_installation这个命令会提示您进行一系列的安全设置,包括:是否......
  • 超级详细的mysql数据库安装指南
    如果你的电脑是windows,参考下面的安装步骤。一、下载mysql数据库进入MySQL官方网站(MySQLCommunityDownloads),按下图顺序点击“进入下载页面 在下载页面拉到最下面会看到下图中的安装软件 MSIInstaller注意有两个,这两个有什么区别呢?第一个(大小是10多M)是联网在线安装,会......