zoukankan      html  css  js  c++  java
  • 表类型(存储引擎)的选择

    表类型(存储引擎)的选择

    插件式存储引擎是MySQL数据库最重要的特性之一,用户可以依据应用的需要选择如何存储和索引数据、是否使用事务等。

    MySQL5.0支持的存储引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎提供非事务安全表。

    默认情况下,创建新表不指定表的存储引擎,则新表是默认存储引擎,如果需要修改,设置default-table-type。

    eg: create table ai(

                      i bigint(20) not null auto_increatement,

                      primary key(i)

    )ENGINE=MyISAM DEFAULT CHARSET=gbk;

    Alter table ai engine=innodb;

    MyISAM

    MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键。优势是访问速度快,对事物完整性没有要求或者以select、insert为主的应用基本上都可以使用此引擎创建表。每个MyISAM在磁盘上存储成3个文件,其文件名都和表名相同,扩展分别为:

    .frm(存储表定义)

    MYD(MYData,存储数据)

    MYI(MYIndex,存储索引)

    加锁:对整张表进行加锁,而不是行

             并发:在读数据的时候,所有的表上都可以获得共享锁(读锁),每个连接都不互相干扰。在写数据的时候,获得排他锁,会把整个表进行加锁,而其他的连接请求(读,写请求)都处于等待中

    InnoDB

    InnoDB存储引擎提供了具有提交、回滚、和崩溃回复能力的事务安全。跟MyISAM比,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

    自动增长列必须索引。

    MySQL支持外键的存储引擎只有InnoDB在创建外键的时候,要求父表必须有对应的索引,字表在创建外键的时候会自动创建对应的索引。

    InnoDB存储表和索引有两种方式:1、使用共享表空间存储;2、使用多表空间存储

    MEMORY

    MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件,格式是.frm。访问速度快(因为数据在内存中,默认使用hash索引,但是一旦服务关闭,表中数据就会丢失)

    MERGE

    MERGE存储引擎是一组MyISAM的组合,这些MyISAM表必须结构完全相同,MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除等操作实际上是对内部的MyISAM表进行的。

    魔由心生,有万境纵横,无一道清静,无量寿佛!
  • 相关阅读:
    一、逻辑架构与存储引擎
    三、动态SQL
    九、装饰者模式
    二、Mapper映射文件
    八、适配器模式
    测试开发系列之Python开发mock接口(二)
    测试开发系列之Python开发mock接口(三)
    html基础
    seleniumWebdriver浏览器驱动信息汇总
    用30行代码开发一个上传、下载文件的接口
  • 原文地址:https://www.cnblogs.com/qihuan/p/4238085.html
Copyright © 2011-2022 走看看