MySQL存储引擎详解

标签: MySQL 存储引擎
10人阅读 评论(0) 收藏 举报

存储引擎 简介

  1. 存储引擎通俗的说就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
  2. 因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。
  3. Oracle和SQL Server等数据库只有一种存储引擎,所有数据存储管理机制都是一样的;而MySql数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。

MySQL常用引擎

  1. MySQL有以下常用的存储引擎

MyISAM

  1. MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表
  2. 部分版本MySQL就是以MyISAM为默认存储引擎的
  3. 注意:如果Mysql数据库和表使用的是MyISAM存储引擎,则表之间是无法关联外键的

InnoDB

  1. InnoDB存储引擎:是一个事务型存储引擎,为用户操作非常大的数据存储提供了一个强大的解决方案,已经被很多互联网公司使用。
  2. 新版本的MySQL,就是以InnoDB作为默认存储引擎
  3. InnoDB引入了行级锁定和外键约束
  4. 在以下场合下,使用InnoDB是最理想的选择:
  • 更新密集的表:InnoDB存储引擎特别适合处理多重并发的更新请求。
  • 事务:InnoDB存储引擎是支持事务的标准MySQL存储引擎。
  • 自动灾难恢复:与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
  • 外键约束:MySQL支持外键的存储引擎只有InnoDB。
  • 支持自动增加列AUTO_INCREMENT属性。

一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择,这也是我们平时开发中经常使用的存储引擎方式。

查看数据库存储引擎

  1. 下面的操作以Server version: 5.0.51b-community-nt-log MySQL Community Edition (GPL)为前提
  2. 意义在于知道当前数据库支持哪些存储引擎,以及数据库当前默认使用的是哪种存储引擎
  3. 查询语句:show engines

  1. Support列: YES表示当前版本支持这个存储引擎;DEFAULT表示该引擎是默认的引擎;NO表示不支持该存储引擎。

查看数据库默认存储引擎

  1. 可以查看系统变量default_storage_engine或storage_engine来查看数据库当前使用的存储引擎
  2. 查询语句:show variables like '%storage_engine%';


  1. 根据MySQL数据库具体版本的不同,查询的结果可能会略有差异,主要结果如下:
  • default_storage_engine:表示永久表(permanent tables)的默认存储引擎。
  • default_tmp_storage_engine:表示临时表的默认存储引擎。
  • storage_engine:数据库当前使用的存储引擎

修改MySQL默认存储引擎

  1. 通过对比MySQL常用存储引擎后,发现Java开发,其实主要就是使用InnoDB存储引擎,因为我们需要它支持事务以及设置外键等操作
  2. 实际开发中也会出现安装了不同版本的MySQL后,像平时一样使用Navicat为数据库表设置外键时,发现居然一点保存就自动消失了,反正就是死活不成功,后面一查才发现数据库使用的是MyISAM存储引擎
  3. 修改MySQL默认存储引擎,只需要修改其配置文件的一行配置即可
  4. 下面这样修改成功后,则以后无论MySQL是否重新启动服务,都会永久修改,想要采用哪种存储引擎时,则只需修改为对应的值即可
  5. 注意:如果数据库之前使用的是MyISAM存储引擎,现在改为了INNODB,则数据库之前所建的表仍然采用的是之前的MyISAM存储引擎,后面新建的表则会重新采用新的INNODB存储引擎

第一步

第二步

  1. linux系统中:找到/etc/my.cnf,修改配置文件中的:default-storage-engine=InnoDB(没有时,增加即可)
  2. windowns系统中:找到安装目录\mysql/my.ini,修改配置文件:default-storage-engine=InnoODB(没有时,增加即可)

第三步

  1. 再重新启动MySQL服务

第四步

  1. 重新连接数据库,再次查看数据库默认的存储引擎


查看表存储引擎

  1. 采用常用的语句:"show create table 表名;"   即可进行查看
  2. 注意:如果数据库之前使用的是MyISAM存储引擎,现在改为了INNODB,则数据库之前所建的表仍然采用的是之前的MyISAM存储引擎,后面新建的表则会重新采用新的INNODB存储引擎

修改表存储引擎

    一:通常有以下两种情况需要“修改某张表的存储引擎”
  • 假如数据库默认为"MyISAM"存储引擎,现在想要修改其中某张表为“InnoDB
  • 或者是例如数据库默认存储引擎由原来的"MyISAM"修改为了“InnoDB”,现在想要将数据库中的所有或者部分表也要由原来的"MyISAM"修改为了“InnoDB
    二:修改语句为:"alter table 表名 engine=innodb;"


    三:如果数据库有几十张甚至几百张表,这样一张一张修改是费时间的。所以可以用工具将它导出为sql,然后手动修改文件里面的参数









查看评论

MySql存储引擎详细介绍

1、Mysql存储引擎概述 插件式存储引擎是MySql数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据、是否使用事务等。 MySql5.0支持的存储引擎包括MyISAM、InnoD...
  • RoadOfTechnology
  • RoadOfTechnology
  • 2016-11-12 13:02:55
  • 872

MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

MySQL中的存储引擎: 1、存储引擎的概念 2、查看MySQL所支持的存储引擎 3、MySQL中几种常用存储引擎的特点 4、存储引擎之间的相互转化...
  • QH_JAVA
  • QH_JAVA
  • 2013-11-05 21:40:39
  • 23318

MySQL详解(2)----------存储引擎

存储引擎是什么? MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术...
  • u011225629
  • u011225629
  • 2015-06-20 09:40:01
  • 1359

MySQL架构设计——MyISAM存储引擎与InnoDB存储引擎

从MySQL5.1开始,MySQL引入了一个新的概念,插件式存储引擎体系结构。可以做到存储引擎层与SQL层各自更为独立,耦合更小,最重要的是方便了存储引擎的加载与移出,可以做到运行时加载新的存储引擎,...
  • zhangliangzi
  • zhangliangzi
  • 2016-05-12 14:32:37
  • 3403

四种mysql存储引擎

前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 ...
  • zhangyuan19880606
  • zhangyuan19880606
  • 2016-04-22 10:33:29
  • 16778

MySQL数据库中存储引擎的详解

关键字:   存储引擎是什么?   MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提...
  • stormbjm
  • stormbjm
  • 2013-09-26 00:52:17
  • 4403

Mysql之InnoDB存储引擎详解

概述 后台线程 默认情况下InnoDB存储引擎的后台线程有7个---------4个IO thread, 1个master thread ,1个锁(lock) 监控线程,1个错误监控线程。 ...
  • grassroots2011
  • grassroots2011
  • 2013-05-01 15:00:22
  • 2113

优化Innodb存储引擎

优化innodb表的存储布局 一旦数据达到了稳定的状态,或是增加到了很大的情况下,就要考虑使用optimize table 语句来重新组织表,压缩浪费的空间,重新组织的表能占用更少的空间,有更好的全...
  • aoerqileng
  • aoerqileng
  • 2016-04-30 18:49:10
  • 300

Mysql两种存储引擎的优缺点

MyISAM引擎是一种非事务性的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。MyISAM中,一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MY...
  • naughty610
  • naughty610
  • 2012-03-24 21:49:32
  • 15234

MySQL内核:InnoDB存储引擎 卷1

MySQL内核:InnoDB存储引擎 卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典)...
  • broadview2006
  • broadview2006
  • 2014-05-28 13:25:59
  • 1689
    个人资料
    等级:
    访问量: 103
    积分: 121
    排名: 130万+
    文章存档
    最新评论