mysql的InnoDB和Myisam引擎

19 篇文章 0 订阅
8 篇文章 0 订阅

InnoDB有事务,适合频繁修改数据的OLTP;Myisam是无事务,适合读取

那么主库InnoDB,备库Myisam呢?

可以的,有人在做了

  1. slave机器的可以节省一半以上的空间

  2. slave备份更快.读性能更高

  3. 其他略

具体操作如下

  1. 设置主库默认引擎为innodb,备库默认引擎为Myisam,并且备库不能支持innodb引擎

/etc/my.cnf中注释掉和Innodb配置相关的参数,修改default_table_type =myisam ,skip-innodb
  1. 直接将主库的数据dump到备库

  2. 配置m-s相关参数,启动即可

但是注意,这样的m-s大部分业务可行,在某些情况下是不行的,上线前你最好观察几天.


但是,这个操作增加了运维的复杂度,随着Redis等工具的兴起(Redis简单教程.md),方案本身吸引力将弱


两者比较

MyISAM VS InnoDB: 谁是引擎之王

  • 这两者在处理上有很多不同,比如一个简单的不带where条件的count(*), MyISAM事先就统计好了行数,简单返回给你就行了; InnoDB是临时去统计的,要计算一阵子,

  • 所以对于变动频繁的业务表,MyISAM就不是很合适,因为写动作多,而MyISAM是以读见长的,且要经常更新count(*),表格损坏恢复性还不好,但是对于一些参数表就比较合适了

  • 对日志表、业务表,InnoDB比较合适,支持事务,功能也比较全面;当表上有写操作时,InnoDB是锁行的,而MyISAM二逼是锁表的,比如我对第一行有个update操作,其他几个人的update/insert/delete都做不了了

这里写图片描述

InnoDB vs. MyISAM 对比表

InnoDB 和 MyISAM 是 MySQL 中两种主要的存储引擎,各有优缺点。InnoDB 支持事务、行级锁和外键,具备自动崩溃恢复功能,适合高并发和需要数据一致性的应用。MyISAM 则不支持事务,使用表级锁,仅提供有限的崩溃恢复工具,但在只读或少量写操作的场景中,仍能提供较好的性能。

MyISAM 最致命的坑
不支持事务

缺乏事务支持意味着无法保证数据的一致性和完整性,在数据修改过程中,如遇到错误或系统崩溃,数据可能处于不一致状态。

表级锁

在高并发写操作场景下,表级锁会导致严重的性能瓶颈。每次写操作都锁住整个表,其他操作必须等待,极大地降低了系统的并发处理能力。

有限的崩溃恢复能力:

MyISAM 仅提供有限的修复工具(如myisamchk),无法保证在系统崩溃后完全恢复数据,增加了数据丢失的风险。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值