zoukankan      html  css  js  c++  java
  • mysql 存储引擎MYSIAM和INNODB特性比较

    事物:MYISAM不支持事物,MyISAM类型的表强调的是性能,其执行数度比InnoDB

    类型更快。如果不考虑事物,大量的select和insert适合MYISAM表

    锁:MYISAM支持表锁
        INNODB提供行级锁,提供与 Oracle 类型一致的不加锁读取(non-locking read in),
       INNODB行锁也不是绝对的,在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

    多版本高并发:多版本高并发即MVCC,INNODB才有MVCC支持高并发,实现四个标
    准隔离级别,默认是可重复读,通过间隙锁防止幻读。间隙锁使得INNODB不仅仅
    锁定涉及查询的行,还对索引中间隙进行锁定,防止幻行写入。

    事务修复和崩溃修复:MYISAM可以手工或者自动的检查和修复操作,但不是崩溃
    恢复。INNODB一定程度上支持崩溃时数据的丢失恢复,但不是绝对的恢复,且恢复时间长

    备份:如果需要关闭服务器执行备份,备份策略可以忽略。但是需要在线热备份,INNODB是更好的选择


    转换引擎上,有三种方式
    1:alert table语句:  alert table mytable ENGINE=InnoDB;
    此方法效率最低,需要把数据复制到一张新表,系统IO能力可能被耗尽,同时在原表加锁,需要避开表使用高峰期,同时会造成原引擎特性丢失,索引,外键等

    2:导入导出
    通过mysqldump工具可以导出到文件。但是会默认在在create table加drop table语句,不注意会造成数据丢失

    2:创建查询
    先创建一个新储存引擎的表,通过insert ---select导入,这种方式在数据量级别低的情况下是不错的选择,如果数据量过大,可以通过分批处理。完成后,新表是对旧表的复制,但旧表还存在。也可以在负责过程中对原表加锁,确保与原表数据一致。

  • 相关阅读:
    Md5
    hdu 2569 彼岸
    调用系统相机相冊
    白盒測试
    HDU 1501
    IOS常见错误分析解决(一直更新) 你值得收藏-综合贴
    读“程序猿生存定律”笔记
    Halcon导出的cpp, VC++环境配置
    POJ 1260 Pearls (动规)
    hdoj-1856-More is better【并查集】
  • 原文地址:https://www.cnblogs.com/supertang/p/4117959.html
Copyright © 2011-2022 走看看