MySQL存储引擎学习(一)

  存储引擎是什么?对于数据库来说,存储引擎是实现数据库底层数据的数据结构定义、存储以及查询等操作的模块或功能。

  不同的数据库具体不同的底层存储机制,也就是不同的存储引擎。数据库服务器在接收到客户端的SQL请求时,会将具体操作交由底层的存储引擎进行处理。

  如果你接触Oracle或mssql等数据库,你可能没有过多关注这些数据库的存储引擎,这是因为无论是Oracle还是mssql,都只有一种存储引擎,而且用户是不能修改其存储引擎的。相比于其他数据库,MySQL提供多种存储引擎,以满足不同的存储需求。

  MySQL服务器的存储引擎是一种"可插入"式体系结构,它提供了一个标准接口,实现了存储引擎的动态加载与卸载,这是MySQL实现多种存储引擎的基础,除了MySQL数据库默认提供的存储引擎外,MySQL支持第三方引擎的集成,通过MySQL提供的标准接口,第三方存储引擎可以非常方便地集成到我们MySQL服务器,也就是说,如果MySQL提供的存储引擎不能满足我们的需求,我们可以定制自己存储引擎来满足自己的需求。

  在MySQL中,存储引擎也叫数据表处理器或表类型,不同的存储引擎实现的效果各不相同,同一存储引擎处理的数据表有共同的属性与特征,我们可以根据自己应用程序使用的不同场景、存储数据的大小来使用不同的存储引擎。

  

简单地说了点理论之后,下面我们开始学习MySQL的存储引擎,内容主要有以下几个方面。

1.查看数据库支持的存储引擎  

在使用存储引擎之前,我们需要知道MySQL服务器支持哪些存储引擎,可以执行下面两个语句。

SHOW ENGINES;

SELECT * FROM INFORMATION_SCHEMA.ENGINES;

执行结果如下图所示:

MySQL服务器支持的存储引擎信息存储在INFORMATION_SCHEMA数据库的ENGINES表中,我们可以通过SELECT语句查询该表得到的结果。不过使用SHOW ENGINES,则更加方便。

ENGINES表存放存储引擎的基本信息,ENGINES表字段含义如下:

Engine:存储引擎名称。
Support:存储引擎是否可用,YES表示可用,NO表示不可用,DEFAULT表示数据库默认的存储引擎。
Comment:存储引擎的介绍信息。
Transactions:是否支持事务。
XA:是否支持分布式事务处理。
Savepoints:是否支持部分事务回滚。

2.查看与设置默认存储引擎

当ENGINES表Support字段值为DEFAULT时,则表示该存储引擎为默认存储引擎,除此之外,还有其他查看或设置默认存储引擎的方式。

(1).启动mysql服务器时设置默认存储引擎

通过mysqld程序启动服务器时,可在该程序后加上default-storage_engine = engine_name选项,来设置mysql的默认存储引擎。

(2).通过配置文件设置默认存储引擎

也可以在my.ini或my.cnf等配置加上如下配置
  

[mysqld]
default-storage_engine = engine_name;

这样,MySQL服务器启动时,会自动读取配置文件,来设置默认存储引擎。

在启动服务器后,如果要改变默认存储引擎,则可以通过以下四种方式

(3).查看当前会话默认存储引擎

SELECT @@SESSION.storage_engine;

(4).设置当前会话默认存储引擎

SET SESSION storage_engine = engine_name;

(5).查看全局默认存储引擎

SELECT @@GLOBAL.storage_engine;

(6).设置全局默认存储引擎

SET GLOBAL storage_engine = engine_name;

SESSION表示会话级,即该设置只对当前用户有效,而不会影响其他用户,GLOBAL表示全局级,如果改变则所有用户连接上MySQL服务器后的默认存储引擎都会使用GLOBAL storage_engine所设定的值,因此执行这个语句需要super权限。

3.创建数据表时,指定存储引擎。

存储引擎作用于数据表,因此,在创建建表时,可以指定数据库支持的任何存储引擎,如果在建表时CREATE语句没有使用engine=engine_name指定存储引擎,则该表使用默认存储引擎。

示例:创建名称为test的数据表,使用InnoDB存储引擎

CREATE TABLE test(
    id INT,
    name VARCHAR(20)
)ENGINE = InnoDB;#指定InnoDB存储引擎

以上建表语句使用InnoDB存储引擎,因此,对该表的存储及查询均由InnoDB来实现。

4.查看数据表的存储引擎

在创建数据表时可以指定存储引擎,同样,可以通过创建语句查询某个数据表使用的存储引擎。

示例:查询数据表test使用的存储引擎

SHOW CREATE TABLE语句用于查询创建数据的SQL语句,通过建表语句,我们可以查询到数据表使用的存储引擎。

5.修改存储数据表存储引擎

在执行完建表语句之后,也可以通过ALTER语句进行修改。

ALTER TABLE test ENGINE MyISAM;

 

时间: 2024-10-07 15:53:16

MySQL存储引擎学习(一)的相关文章

重新学习MySQL数据库3:Mysql存储引擎与数据存储原理

重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有两个词非常容易混淆,也就是数据库和实例: 数据库:物理操作文件系统或其他形式文件类型的集合: 实例:MySQL 数据库由后台线程以及一个共享内存区组成: 对于数据库和实例的定义都来自于 MySQL 技术内幕:InnoDB 存储引擎 一书,想要了解 InnoDB 存储引擎的读者可以阅读这本书籍. 数据

MySQl学习-——Mysql体系结构与Mysql存储引擎

Mysql体系结构与Mysql存储引擎 Mysql体系结构 mysql体系结构图: 1)        Connectors:指的是不同语言中与SQL的交互 max_connections 就是整个MySQL实例的最大连接数限制 max_user_connections 是单个用户的最大连接数,这里未指明是哪个用户,是任意一个用户. 2)        Management Serveices & Utilities:系统管理和控制工具 备份和恢复的安全性,复制,集群,管理,配置,迁移和元数据

MySql学习 - MySql存储引擎笔记

MySql存储引擎 MySql数据库有很多种存储引擎,不同的引擎特点不同,有各自的优点.最近在看MySQL技术内幕,刚好做下笔记. InnoDB存储引擎 这个是自从MySQL 5.5.8版本后的默认存储引擎,也是我平时使用的搜索引擎.支持事务操作,主要面向联机事务处理的应用,特点是行锁设计,支持外键,也支持类似Oracle的非锁定读这种默认读取操作不会产生锁. 通过使用版本控制来获得高并发并且实现了SQL标准的四种隔离级别,默认是REPEATABLE级别(可以防止脏读和非重复读).同时使用一种n

MySQL存储引擎认识

存储引擎是MySQL的一大特色,学习MySQL必须要了解它,知其各种engines的差异,怎样正确的选择与使用之.因此简要介之. 1. 查看系统所支持的引擎类型,如截图中的命令. 2. 设定系统使用一个指定的存储引擎   有很多方法指定一个要使用的存储引擎.比较简单的方法是在MySQL配置文件中my.ini或my.cnf中设置一个默认的引擎类型,比如使用default_storage_engine=innodb 选项:或在启动数据库服务器时在命令行后面加上--default-storage-en

第三章 MySQL存储引擎介绍

1 MySQL存储引擎的概念 MySQL中数据用各种不同的技术存储在文件(或内存)中,这些技术都使用不同的存储机制.索引技巧,锁定水平,并且最终提供广泛的.不同的功能,通过选择不同的技术,能够获得额外的速度或功能,从而改善整体功能. SQLServer和Oracle都使用了一种存储引擎,而MySQL有多种存储引擎. 所谓的存储引擎,其实就是表的类型 2 查询MySQL中支持的存储引擎 show engines; show engines \g show variables like 'have%

MySQL索引创建与删除,MySQL存储引擎的配置

MySQL索引创建与删除 1.1 问题 本案例要求熟悉MySQL索引的类型及操作方法,主要练习以下任务: 普通索引.唯一索引.主键索引的创建/删除 自增主键索引的创建/删除 建立员工表yg.工资表gz,数据内容如表-1.表-2所示,设置外键实现同步更新与同步删除 表-1 员工表yg的数据 表-2 工资表gz的数据 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:索引的创建与删除 创建表的时候指定INDEX索引字段 创建库home: mysql> create database home;

mysql 存储引擎介绍

一  存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如mp4,avi,wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs.fat32,存在于linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的.直观区别是,占用系统的

MySQL存储引擎介绍 w

一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如mp4,avi,wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs.fat32,存在于linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的.直观区别是,占用系统的空

mysql存储引擎

mysql的物理文件组成包括错误日志,查询日志,慢查询日志,事务日志,二进制日志. 日志文件中记录mysql数据库运行期间发生的变化,记录mysql数据库的客户端连接状况,sql语句的执行情况和错误信息. mysql的逻辑结构可以看成是二层架构,第一层叫做SQL layes,数据库系统处理底层数据库之前的所有工作都在这一层完成,包括权限判断,sql解析,执行计划优化,query cache的处理等.第二层就是存储引擎层,叫做storage engine layes,也是底层数据存取操作实现部分,