zoukankan      html  css  js  c++  java
  • myisam和innodb区别

    MYISAM和innoDB对比
      innoDB MYISAM
    数据存储方式 innoDB的数据存在表空间中,表空间是由innoDB管理的一个黑盒子,由一系列的数据文件组成,所以其大小限制不再是文件大小的限制。4.1以后的版本,innoDB可以将每个表的数据和所有单独放在单独的文件里,所有其大小限制变成文件系统的大小限制。决定存储方式的配置为innodb_file_per_table,若为1则开启独占表空间。 MYISAM将数据保存在以.MYD的文件中,将索引保存在.MYI文件中。其表大小受限文件系统的大小。
     事务处理  innoDB支持事务和外键等高级数据库功能  不支持事务

     select、update、

    insert、

    delete操作

     如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表

    DELETE   FROM table时,InnoDB不会重新建立表,而是一行一行的删除,如果要清空保存有大量数据的表,最好使用truncate table这个命令。

    LOAD   TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用

      如果执行大量的select操作MYISAM是更好的选择
    表的具体行数  InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行
    select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含   where条件时,两种表的操作是一样的
     锁  InnoDB表的行锁也不是绝对的,假如在执行一个SQL语句时mysql不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”  表锁
     AUTO_INCREMENT  InnoDB中必须包含该字段的索引,若该字段仅建立一个联合索引时,必须作为联合索引的第一个值  在MYISAM只要求包含该字段索引
      innoDB MYISAM
    存储 数据和索引放在同一文件 数据和索引分开存储
      可以共享表空间也可以单独表空间 每张表单独存储
      不存储行数,coun(*)全表扫描 存储行数
    事务 事务安全,ACID 不支持事务
      行级锁定(不是绝对的) 表锁
      通过设置autocommit 每句语句自动提交
    缓存

    innodb_log_pool_size

    innodb_buffer_pool_size

    innodb_additional_mem_pool_size

    key_buffer_size

      缓存数据、日志、索引、数据字典 缓存索引
    其他 不支持repair table,可以check 支持repair table 、check
      具备故障恢复能力 通过myisamchk进行故障恢复
  • 相关阅读:
    __dopostback的用法
    Asp.net MVC中防止HttpPost重复提交
    分享SQL2005 查询表结构的SQL语句
    SQL Server char nchar varchar nvarchar的区别
    SQL2005中的XXproperty() 函数归纳
    QQ登录端口研究
    关于SQLSERVER的全文目录跟全文索引的区别
    版本管理软件VisualSVN、TortoiseSvn、AnkhSvn 后记
    SCREEN2EXE视频录像软件 提供技术支持的好帮手
    介绍一款替代SSMS的sqlserver管理工具 toad for sqlserver5.7
  • 原文地址:https://www.cnblogs.com/huixuexidezhu/p/7049776.html
Copyright © 2011-2022 走看看