2013年5月4日星期六

MySQL中MyISAM与InnoDB的区别



    show table status; 

    查看表采用何种引擎。

    MySQL Administrator建数据库的时候,表缺省是InnoDB类型。原来是MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
     MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。这样就可以根据数据表不同的用处是用不同的存储类型。

    另外,MyISAM类型的二进制数据文件可以在不同操作系统中迁移。也就是可以直接从Windows系统拷贝到linux系统中使用。
--------------------------------------------------------------
    mysql数据库中最常使用的两种表类型为 innodb和myisam。这两种类型各有优缺点,视具体应用而定。
    InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
    InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs)。这些特性均提高了多用户并发操作的性能表现。  
    在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。
    InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。
    InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。
    在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
     InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。
     InnoDB 表的大小只受限于操作系统的文件大小,一般为 2 GB。
     InnoDB所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件), 相对来说比较不好备份,免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。 

没有评论:

发表评论