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表进行的。

    魔由心生,有万境纵横,无一道清静,无量寿佛!
  • 相关阅读:
    1.2 JAVA的String类和StringBuffer类
    1.7 JAVA异常总结
    2.1 JQuery框架(封装JavaScript框架)
    1.6 JSON存储数据方式(JavaScript对象表示法)
    1.33 JavaScript之HTML的DOM(三)
    1.32 JavaScript的BOM(二)
    【转】SQL 生成连续字符
    木兰国产编程语言 Mulan--附带下载地址
    【python】两行代码实现近百年的正反日期查询--20200202
    Linux下扫描服务器IP地址是否冲突(arp-scan)
  • 原文地址:https://www.cnblogs.com/qihuan/p/4238085.html
Copyright © 2011-2022 走看看