1.存储引擎是什么?

      MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。

这些不同的技术以及配套的相关功能在 MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。

2.下面是MySQL数据库中常用的存储引擎:

我们发现这些存储引擎功能特性不相同,现实应用中,我们根据我们的需求选择不同的存储引擎。

3. (1)查询我们MySQL中所有的存储引擎:

show engines;(或者show engines\G)

如下图:

由上面知道MySQL数据库默认存储引擎是InnoDB(安装版MySQL默认InnoDB,免安装版为MyISAM)

也可以使用show variables like 'have%';

Variable_name参数表示存储引擎的名字,Values参数表示MySQL数据库管理系统是否支持该存储引擎,其中值YES表示支持,值NO表示不支持,值DISABLED表示支持但是没有开启。

(2)查询默认存储引擎

(3)修改默认存储引擎

手动修改:

-->1.首先打开my.ini配置文件,关于"[mysqld]"组的内容如下:

#服务器端参数配置

#SERVER SECTION

…………

[mysqld]

#服务器端的端口号

port=3306

#MySQL数据库服务器的安装目录

basedir =basedir="E:/software/PHP/mysql server 5.5.15/"

#MySQL数据库数据文件的目录

datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

#MySQL服务器端的字符集

character-set-server=utf8

#MySQL服务器的存储引擎

default-storage-engine=INNODB

-->2. 如果想要修改存储引擎,只需要修改[mysqld]组中的default-storage-engine参数。即如果想设置默认存储引擎为MyISAM,只需要修改成:

default-storage-engine="MyISAM" 即可实现

-->3. 重启MySQL即可

(4). 创建表的时候定义表对应的存储引擎:

进入数据库数据文件目录,找到刚刚创建的room表,如下:

上面我们可以发现,一个默认InnoDB存储引擎,存储表格时候存在一个文件(比如这里的:user1.frm)。

一个MySIAM存储引擎,存储表格时候存在3个文件(比如这里的:room.frm,room.MYD,room.MYI)

•对应于MySIAM存储引擎:

     (1)   .frm是表的结构文件

     (2)   .MYD是表保存数据的文件

     (3)   .MYI是表保存索引的文件

•对应于InnoDB存储引擎:

     (1)   .frm是表的结构文件

     (2) ibdata1是InnoDB保存数据的文件(区别于MySIAM)

(5)InnoDB 和 MyISAM 存储引擎的区别 ?

区别1:两者保存文件 的方式不同。

           MySIAM,一个表,三个文件。Tbl_name.frm(结构),Tbl_name.MYD(数据),Tbl_name.MYI(索引)。

           InnoDB,一个表,一个文件。Tbl_name.frm(结构),所有的InnoDB表,都是使用相同的InnoDB存储空间(就是上面的ibdata1)在保存数据和            索引。

区别2:InnoDB不支持FULLTEXT类型的索引。

区别3:InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。

区别4:.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

区别5:.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

区别6:.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

(6)选择存储引擎的依据

• 性能

• 功能

MySQL(11):存储引擎的更多相关文章

  1. mysql之存储引擎和文件配置

    (查看系统服务,在运行里输入services.msc) 补充:将mysql做成系统服务:mysqld --install 取消:mysqld --romove 在服务中可以直接鼠标操作mysql服务的 ...

  2. MySQL之存储引擎(表类型)的选择

    和大部分的数据库不同,MySQL中有一个存储引擎的概念,用户可以根据数据存储的需求来选择不同的存储引擎.本次博客就来介绍一下MySQL中的存储引擎.MySQL版本 5.7.19. 概述 MySQL的存 ...

  3. MySQL常用存储引擎功能与用法详解

    本文实例讲述了MySQL常用存储引擎功能与用法. MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE ...

  4. MySQL-TokuDB:MySQL 高性能存储引擎:TokuDB

    ylbtech-MySQL-TokuDB:MySQL 高性能存储引擎:TokuDB 1.返回顶部 1. 在安装MariaDB的时候了解到代替InnoDB的TokuDB,看简介非常的棒,这里对ToduD ...

  5. MySQL之四 存储引擎

    1.介绍 存储引擎MySQL中的"文件系统" MySQL体系结构 InnoDB存储引擎介绍 My1SAM 和InnoDB区别  mysql MariaDB [(none)]> ...

  6. MYSQL的存储引擎一般只要哪些?

    根据个人个人见解: MySQL的存储引擎(构成.安全.锁) Myisam:数据操作快速的一种引擎,支持全文检索.文件保存在数据库名称为目录名的 目录中,有3个文件,分别是表定义文件(.frm).数据文 ...

  7. MySQL常用存储引擎及如何选择

    一.MySQL的存储引擎 完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html 这里介绍一些主要的引擎 ...

  8. mysql 的存储引擎介绍

    在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库.而在设计表的时候,我们都会关注一个问题,使用什么存储引擎.等一下,存储引擎?什么是存储引擎? 什么是存储引擎? ...

  9. mysql数据库存储引擎及区别

    MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERAT ...

  10. MySQL数据库----存储引擎

    什么是存储引擎? 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操 ...

随机推荐

  1. C++多重继承虚表的内存分布

    接前面虚表的内存分布,今天重点看多重继承的虚表内存分布,简单的说,继承几个类便有几个虚表,如下代码 class Drive : public Base1, public Base2, public B ...

  2. oracle触发器应用

    首先给大家推荐两篇我看后的博文,我已经内容转载过来: 1.对触发器的讲解 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建 ...

  3. 【行为型】Visitor模式

    访问者模式意图在不改变目标对象类结构的情况下,扩展对象类的行为.新扩展的行为均被封装成类对象的形式来动作.应用该模式时,往往目标类系与Visitor类系是两个不同的类系,它们配合工作但维护是分开的,互 ...

  4. Net Core 项目实战之权限管理系统(0)

    0 前言 Net Core 项目实战之权限管理系统(0) 无中生有   0 http://www.cnblogs.com/fonour/p/5848933.html 学习的最好方法就是动手去做,这里以 ...

  5. 10个Java面试题及答案

    1. 什么是JVM? 为什么称Java为跨平台的编程语言? Java虚拟机(Java Virtual Machine)是可以执行Java字节码的虚拟机,每个Java源文件将被编译成字节码文件,然后在J ...

  6. 至芯FPGA培训中心-1天FPGA设计集训(赠送FPGA开发板)

    至芯FPGA培训中心-1天FPGA设计集训(赠送开发板) 开课时间2014年5月3日 课程介绍 FPGA设计初级培训班是针对于FPGA设计技术初学者的课程.课程不仅是对FPGA结构资源和设计流程的描述 ...

  7. [Android] 获取音频输出getOutput

    每创建一个AudioTrack,代表需要新增一个输出实例,即需要根据音频流的的stream type,音频流的音轨数量,采样率,位宽等数据来重新构建buffer,而且输出的设备也可能会有变化,由于An ...

  8. Xamarin Studio –Project not built in active configuration

    当我们加载项目以后如果出现以下项目提示 处理方式如下: 解决方案右键->options 配置->configuration mappings->勾选构建的ios项目 项目右键-> ...

  9. 设计模式(五):PROTOTYPE原型模式 -- 创建型模式

    1.定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 2.适用场景 原型模式的主要思想是基于现有的对象克隆一个新的对象出来,一般是有对象的内部提供克隆的方法,通过该方法返回一个对 ...

  10. HDU 4627 There are many unsolvable problem in the world.It could be about one or about zero.But this time it is about bigger number.

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/E 解题思路:数论,从一个数的中间开始往两边找,找到两 ...