zoukankan      html  css  js  c++  java
  • MySQL 存储引擎的类型以及选择

      针对MySQL,数据最终以什么样的形式保存?以及数据保存在硬盘的什么位置?

      1、MySQL的存储引擎

      MySQL属于数据管理系统(DBMS),其中包括数据库,负责存储数据;还有数据库访问管理的接口系统,负责管理数据库。

      为了满足不同的业务需求,MySQL的数据库采用多种存储引擎进行数据存储。

      2、存储引擎是什么?

      存储引擎指定了表的存储类型,即如何存储和索引数据、是否支持事务等。同时,存储引擎也决定了表在计算机中的存储方式。

      我的MySQL Server version为5.7,支持的存储引擎如下表,默认为InnoDB

      XA是跨数据库事务,可以基于此实现分布式事务。

      savepoint:即一个事务中的存档点,可以rollback到此处,而且不会终结事务。具体细节见官方文档。

      (https://dev.mysql.com/doc/refman/8.0/en/savepoint.html)

      3、InnoDB和MyISAM各自的基本特点和使用场合:

      MyISAM:不需要事务处理,以访问为主的应用适合使用该引擎;

      InnoDB:支持事务控制,比MyISAM占用更多的磁盘空间。适合需要进行频繁更新、删除操作,同时还对事务的完整性要求性比较高,需要实现并发控制的应用。

    功能 InnoDB MyISAM
    支持事务 支持 不支持
    支持全文索引 不支持 支持
    外键约束 支持 不支持
    表空间大小 较大 较小
    数据行锁定 支持 不支持

      

      4、为了实现特殊功能,可以指定某个表的存储引擎,因此表的存储引擎也可以被称为表类型

    create database enginedb;
    use enginedb;
    /*创建类型为MyISAM的表*/
    drop table if exists 'myisam';
    create table 'myisam'(
        sid INT(4)
        )engine=MyISAM;
    
    /*创建类型为InnoDB的表*/
    drop table if exists 'innodb';
    create table 'innodb'(
        sid INT(4)
        )engine=InnoDB;

      

      5、MySQL的数据文件是怎样的?它是如何存放的?

      不同的存储引擎下,数据文件有所不同。

      a、数据文件的位置

      不同操作系统数据文件的默认存储位置不同,本机:datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data

      b、MyISAM类型的表文件中,数据文件有三种:

      • .frm   表结构定义文件,该文件与存储引擎无关,都有的。
      • .MYI  索引文件,存放MyISAM类型表的索引信息。
      • .MYD  数据文件,存放表中的数据

      

      c、InnoDB类型的表文件

      • .frm
      • ibdata1 数据文件,保存所有InnoDB类型表的数据

     

      6、根据实际选择合适的存储引擎

      以下是由实践经验总结的建议。

      MyISAM:

      如果应用以读操作和插入操作为主,只有少量的更新和删除操作,并且对事务的完整性、并发性要求不高,那么MyISAM是一个不错的选择。

      MyISAM是在Web、数据仓储等环境下最常使用的存储引擎。

      InnoDB:

      支持事务处理、支持外键。

      如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作处理插入和查询以外,还包括很多更新、删除操作,那么InnoDB是比较合适的选择。

      InnoDB存储引擎除了有效地降低由于删除和更新导致的锁定,还可以确保事务完整提交和回滚,对类似计费系统或者财务系统等对数据的准确性要求比较高的系统,InnoDB是合适选择。

      MEMORY:

      将所有的数据保存在RAM中。

      在需要快速定位记录和其他类似数据的环境下,可提供极快的访问。

      缺陷在于,MEMORY对表的大小有限制,太大的表无法cache在内存中。其次是要确保表的数据可以恢复,在数据库异常终止后,表中的数据是可以恢复的。

      MEMORY表通常用于更新不太频繁的小表,用于快速得到访问结果。

      MERGE:

      将一系列相同结构的MyISAM表以逻辑方式组合在一起,并作为一个对象引用它们。

      MERGE表的优点在于可以突破单个MyISAM表的大小限制,并通过将不同的表分布在多个磁盘上,可以有效地改善MERGE表的访问效率。

      对于存储仓储等VLDB环境十分合适。

     

  • 相关阅读:
    为sublime text2 添加SASS语法高亮
    下拉框点链接js
    [JavaScript] 初中级Javascript程序员必修学习目录
    判断页数及切换
    切换加上延迟加载js代码
    jquery 简单弹出层(转)
    左右滑动删除ListView条目Item--第三方开源--SwipeToDismiss
    使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
    从一个URL下载原始数据,基于byte字节,得到byte数组
    动画气泡指示当前滑动值--第三方开源--DiscreteSeekbar
  • 原文地址:https://www.cnblogs.com/bigbigbigo/p/8387091.html
Copyright © 2011-2022 走看看