我是靠谱客的博主 大力小鸭子,最近开发中收集的这篇文章主要介绍MYSQL 存储引擎篇,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先要了解MySQL体系结构

客户端连接器  连接   MySQL Server 

MySQL Server 分为 连接层,服务层,引擎层,存储层

注意:1、索引Index是在存储引擎层实现的,不同的存储引擎索引结构不同。

2、InnoDB是MySQL 5.5 版本以后默认的存储引擎。

  • 连接层:最上层是一些客户端和连接服务,主要完成一些类似于连接处理,授权认证以及相关的安全方案,服务器也会为安全接入的每个客户端验证它所具有的操作权限。
  • 服务层:第二层架构主要完成的大多数核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行,所有跨存储引擎的功能也在这一层实现,如过程、函数等。
  • 引擎层:存储引擎真正负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信,不同的存储引擎具有不同的功能,可以根据不同的需要来选取合适的存储引擎。
  •  存储层:主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

什么是存储引擎?

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的而不是基于库的,所以存储引擎也可被称为表类型。

注意:

1、查询建表语句:show create table 表名;

2、创建表时指定表存储引擎:

        create table udser{

                name varchar(10),

                id int(5);

         }engine=InnoDB;

3、查看当前数据库支持的存储引擎:

show engines;

查询结果解释:

Engine类型
Support是否支持
Comment注释
Transactions是否支持事务
XA是否支持XA协议
Savepoints是否支持保存点


InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎。

1、特点:

  • DML操作遵循ACID模型,支持事务。
  • 行级锁,提高并发访问性能。
  • 支持外键foreign key约束,保证数据的完整性和正确性。

2、文件:

xxx.ibd :xxx代表的是表名

InnoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm,sdi)、数据和索引。

3、参数: innodb_file_per_table

查询语句:

show variables like 'innodb_file_per_table'

注:ibd正常查看不了内容,可以在路径下进入cmd

输入:ibd2sdi 表名.ibd


存储引擎的逻辑存储结构

TableSpece表空间
Segment
Extent
Page
Row

注意:区和页的大小固定的,区的大小是1M ,页的大小是16k,所以一个区可以包含64个页。


MyISAM 是早期默认的存储引擎

1、特点:

不支持事务,不支持外键,支持表锁,不支持行锁,访问速度快

2、文件:

xxx.sdi:存储表结构信息

xxx.MYD:存储数据

xxx.MYI:存储索引


Memory 存储在内存中,由于受到硬件、断电等问题,只能将这些表作为临时表或缓存使用

1、特点:

内存存放、hash索引(默认)

2、文件:

xxx.sdi:存储表结构信息


重点总结:

1、问InnoDB和MyISAM的区别:

  1. InnoDB支持事务,MyISAM不支持
  2. InnoDB支持行锁,MyISAM 支持表锁
  3. InnoDB支持外键,MyISAM不支持

2、这三种引擎什么时候选择哪种:

  1. InnoDB:对事务完整性和并发条件下要求数据一致性,要求比较高。
  2. MyISAM:只是以读取和插入为主,很少更新和删除,并对事务的完整性、并发性要求不高。
  3. Memory:存在内存中,访问速度快,可用于临时表及缓存,缺陷就是对表的大小有限,太大的表无法在内存中返回,无法保障安全性。 

最后

以上就是大力小鸭子为你收集整理的MYSQL 存储引擎篇的全部内容,希望文章能够帮你解决MYSQL 存储引擎篇所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部