我想请问各位,不知大家目前所做的项目里面MYSQL的存储引擎一般是用什么引擎呢?
主要是MyISAM呢,还是InnoDB呢?
最好是有经验人士的答案。经过了真正实践的考验的。
目前我是用ENGINE = MyISAM ROW_FORMAT = DYNAMIC。
我目前了解的就是如果用MyISAM的话,在data文件夹里面就会有*.frm、*.MYD、*.MYI,这三个文件,只要对这三个文件备份的话,如果系统崩溃了,也一样可以找回表的结构与数据。
如果用InnoDB,如果系统崩溃了就想找回数据,必须要ibdata1文件,因为InnoDB的数据全部都这里面了。
这是我在一次经验中发现的。
所以现在我一般用MyISAM引擎。
针对MyISAM与InnoDB这两个表的特征,我也搜索过很多文章对比过,但是感觉自己所接触的项目根本就没有发现到两者太大的差异。感觉好像一样。可能是因为本人所接触的项目比较小。
我希望各位有经验的人一起来讨论这个问题,各抒己见。
希望是经验之谈。

解决方案 »

  1.   

    我的经验就是:
    我的数据库比较小,连接人数不多,所以MyISAM和InnoDB感觉上没什么太大的区别。
    不过我问过有经验的人,他说简单来说连接数很多,又同时操纵一个表的时候,MyISAM就是要一个个执行,而InnoDB可以多个执行,不冲突
      

  2.   

    话题太大了。简单的表达。
    MyISAM 是非事务的存储引擎。
    innodb是支持事务的存储引擎。两者在文件结构,查询效率,参照完整性支持,等方面都有差异。 MYSQL文档中用了近万字来描述这两个存储引擎。
      

  3.   

    事务安全表(TST) 比起非事务安全表 (NTST)有几大优势:·         更安全。即使MySQL崩溃或遇到硬件问题,要么自动恢复,要么从备份加事务日志恢复,你可以取回数据。 ·         你可以合并许多语句,并用COMMIT语句同时接受它们全部(如果autocommit被禁止掉)。·         你可以执行ROLLBACK来忽略你的改变(如果autocommit被禁止掉)。 ·         如果更新失败,你的所有改变都变回原来。(用非事务安全表,所有发生的改变都是永久的)。 ·         事务安全存储引擎可以给那些当前用读得到许多更新的表提供更好的部署。虽然MySQL支持数个事务安全存储引擎,为获得最好结果,你不应该在一个事务那混合不同表类型。如果你混合表类型会发生问题,更多信息请参阅13.4.1节,“START TRANSACTION, COMMIT和ROLLBACK Syntax”。如果你没有指定配置值的话,InnoDB使用默认的配置值。请参阅15.2.3节,“InnoDB配置”。 非事务安全表自身有几个优点,因为没有事务开支,所有优点都能出现:·         更快·         需要更少的磁盘空间·         执行更新需要更少的内存
    http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html
    15. 存储引擎和表类型
    15.1. MyISAM存储引擎
    15.1.1. MyISAM启动选项
    15.1.2. 键所需的空间
    15.1.3. MyISAM表的存储格式
    15.1.4. MyISAM表方面的问题
    15.2. InnoDB存储引擎
    15.2.1. InnoDB概述
    15.2.2. InnoDB联系信息
    15.2.3. InnoDB配置
    15.2.4. InnoDB启动选项
    15.2.5. 创建InnoDB表空间
    15.2.6. 创建InnoDB表
    15.2.7. 添加和删除InnoDB数据和日志文件
    15.2.8. InnoDB数据库的备份和恢复
    15.2.9. 将InnoDB数据库移到另一台机器上
    15.2.10. InnoDB事务模型和锁定
    15.2.11. InnoDB性能调节提示
    15.2.12. 多版本的实施
    15.2.13. 表和索引结构
    15.2.14. 文件空间管理和磁盘I/O
    15.2.15. InnoDB错误处理
    15.2.16. 对InnoDB表的限制
    15.2.17. InnoDB故障诊断与排除
      

  4.   

    楼主 要看看 MySQL 手册你要的内容,基本都在里面可以找到答案。因为手册专门开了一章来讲解 存储引擎的。
      

  5.   

    InnoDB 存储引擎是 行级锁, 在高并发的情况下,效能会高一些
      

  6.   

    这样的问题为什么不翻阅mysql手册 比谁回答的都权威
      

  7.   

    innodb的引擎比较适合于插入和更新操作比较多的应用
    而myisam则适合用于频繁查询的应用
      

  8.   

    你的表没有外键????
    好像MyISAM 不支持外键
      

  9.   

    myisam--表锁。
    innodb--设计合理的话是行锁。
    myisam不会出现死锁。
      

  10.   

    innodb引擎没用过,公司项目主要用MyISAM引擎,由于MyISAM 是非事务的存储引擎,所以个人实际应用中最大的感受就是外键在这基本没什么用,有外键关系的级连操作全部需要多条sql实现,麻烦
      

  11.   

    最大的区别就是MYISAM适合小数据,小并发;INNODB 适合大数据,大并发。
      

  12.   

    SQL手册是用说明,作为楼主的我,一早就已经查阅,而且看了好几次了!我只要是想大家拿自己的经验来讨论......
    针对楼上的各位,貌似用MyISAM的人偏多,没几个是真正用innodb的哦!
      

  13.   

    更安全。即使MySQL崩溃或遇到硬件问题,要么自动恢复,要么从备份加事务日志恢复,你可以取回数据。 
    有没有真正有过这个经验的呢?
    是否真的验证了这一句话呢?
    我个人感觉innodb很难恢复数据,比较麻烦,比MyISAM麻烦
      

  14.   

    MyISAM 是非事务的存储引擎。
    innodb是支持事务的存储引擎。 如果你经常在这个表上做事务操作,用innodb
    如果只是insert和select,用MyISAM 跟其他什么数据大小都没有关系
    MyISAM 甚至是查询最快的引擎