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

    MySQL 的存储引擎种类很多,有MyISAM、InnoDB、Archive、Blackhole、CSV、Memory、Merge、NDB等等,以下介绍常用的存储引擎:

    一、MyISAM:

      在MySQL 5.1 及之前的版本,MyISAM 是默认的存储引擎。MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM  不支持事务、不支持外键、不支持行级锁(仅支持 表级锁)。特点是访问速度快,对事务完整性没有要求。以select、insert为主的应用基本上都可以用这个引擎来创建表。MyISAM类型的表可能会损坏,原因可能是多种多样的。可以通过check table 语句检查MyISAM表的健康,并用repair table 语句修复一个损坏的MyISAM 表。

      MyISAM 表磁盘上存储成3 个文件,其中文件名和表名相同,但扩展名分别是:

    .frm(存储表定义)
    .MYD(MyData,存储数据)
    .MYI(MyIndex,存储索引)

      MyISAM 表还支持3 种不同的存储格式,分别是:    

        1. 静态(固定长度)表:长度固定,优点是存储非常迅速,容易缓存,出现故障时容易恢复;缺点是占用的空间通常比动态表多;

        2. 动态表:记录长度不固定,这样存储的优点是占用的空间相对小,但是频繁的更新和删除记录会产生碎片,需要定时执行

        optimize table 语句或myisamch-r 命令来改善性能。出现故障时恢复相对困难;

        3. 压缩表:占用非常小的磁盘空间,因为每个记录都是被单独压缩的,所以只有非常小的访问开支。

      MyISAM 特性是:

        1. 加锁与并发:对整张表加锁,而不是针对行。读取时会对需要读到的所有表加共享锁,写入时则对表加排他锁。但是在表有读取

        查询的同时,也可以往表中插入新的记录(这被称为并发插入,Concurrent Insert);

        2. 为保证效率,不支持事务处理;

        3. count(*) 时效率高,不用遍历全表,原因是该引擎会记录行数;

        4. 非聚簇索引,支持全文索引,索引数据和表数据分开存储;

    二、InnoDB: 

      MySQL 5.5之后默认的事务型引擎修改为InnoDB。它被设计用来处理大量的短期事务,短事务大部分情况是正常提交的,很少会被回滚。它是事务安全的,具有提交、回滚和崩溃恢复能力。InnoDB 表默认为行级锁,是基于聚簇索引建立的。聚簇索引对主键查询有很高的性能。不过它的二级索引中必须包含主键列,所以如果主键列很大的话,其他的索引都会很大。存储格式是平台独立的,可以将数据和索引文件复制到其他平台。

      InnoDB 存储方式:

        1. 使用共享表空间存储,这种创建的表,表结构数据保存在.frm 文件中,数据和索引数据保存在innodb_data_home_dir 和 innodb_data_file_path定义的表中间,可以是多个文件;

        2. 使用多表空间存储,这种方式创建的表,表结构数据仍然存在.frm 文件中,但是每个表的数据和索引单独保存在.ibd 中,如果是个分区表,则每个分区对应单独的.ibd 中,文件名是“表名+分区名”,可以在创建分区的时候指定每个分区的数据文件位置,以此来将表的IO均匀分布在多个磁盘中;

      InnoDB 特性是:

        1. 事务安全;

        2. 行级锁,为承受高并发增加了竞争力;

        3. count(*) 时效率低,遍历表一计算数量;

        4. 聚簇索引,主键默认为聚簇索引,没有主键时以第一列为聚簇索引,普通索引指向聚簇索引;

        5. 主持主键、外键;

    三、指定引擎: 

    1create table mytable (name varchar(32)) engine=InnoDB;
    2alter table mytable engine = MyISAM;
  • 相关阅读:
    java 基本功
    orale问题汇总
    redis 集群
    centos7 之 systemctl
    redis 常见问题记录
    docker问题汇总
    sql plus 导出建表语句
    linux 添加删除用户
    mysql常用配置
    SAS 查看临时数据集
  • 原文地址:https://www.cnblogs.com/haiyangwu/p/10464990.html
Copyright © 2011-2022 走看看