MySQL详解

MySQL 存储引擎

  • InnoDB:是 MySQL 默认的存储引擎,支持事务、外键、行级锁等特性,适合处理高并发、数据完整性要求高的场景。
  • MyISAM:不支持事务和外键,只支持表级锁,读写性能较高,但在数据完整性和并发处理方面不如 InnoDB,常用于只读或插入为主的应用场景。
  • Memory:将数据存储在内存中,读写速度极快,但数据在服务器重启后会丢失,适用于临时数据存储和缓存。
  • Archive:对于只有INSERT和SELECT操作的场景,如日志记录,可以考虑使用Archive引擎,它支持高并发的插入操作,但不是事务安全的。

行级锁

基本概念

行级锁是一种锁定粒度最小的锁机制,它只对当前操作的数据行进行加锁。当一个事务对某一行数据加锁后,其他事务可以同时对其他行数据进行读写操作,只有当其他事务也需要访问被锁定的这一行数据时,才会受到锁的限制。

特点
  • 并发度高:由于只锁定当前操作的行,所以不同事务可以同时操作不同的行,大大提高了数据库的并发处理能力。
  • 开销大:行级锁需要维护更多的锁信息,因此加锁和解锁的开销相对较大。
  • 死锁风险:因为行级锁的使用更加灵活,多个事务之间可能会因为相互等待对方释放锁而导致死锁。
适用场景
  • 适用于对数据的并发访问要求较高,且对特定行数据进行频繁更新、删除操作的场景,例如在线交易系统中对订单记录的处理。

表级锁

基本概念

表级锁是一种锁定粒度最大的锁机制,它对整个表进行加锁。当一个事务对某个表加锁后,其他事务无法对该表进行任何读写操作,直到锁被释放。

特点
  • 并发度低:由于锁定了整个表,同一时间只能有一个事务对该表进行操作,因此并发处理能力较差。
  • 开销小:表级锁只需要维护一个锁信息,加锁和解锁的开销相对较小。
  • 死锁风险低:因为同一时间只有一个事务可以对表进行操作,所以死锁的风险相对较低。
适用场景
  • 适用于对数据的一致性要求较高,但对并发访问要求较低的场景,例如数据仓库中的批量数据更新操作。

InnoDB

默认存储引擎

先加索引才能加外键约束

外键约束后,只能新增另一张表已有的k值

MyISAM

不支持事务

START TRANSACTION;
-- 执行一系列数据库操作
UPDATE myisamtest SET v = v - 100 WHERE k = 1;
-- 回滚事务
ROLLBACK;
START TRANSACTION;
-- 执行一系列数据库操作
UPDATE innodbtest SET v = v - 100 WHERE k = 1;
-- 回滚事务
ROLLBACK;

回滚后,innodbtest id=1的value不变,而myisamtest减少了100,因为不支持事务,无法回滚

Memory

存储在内存中,关机重启数据丢失

Archive

Archive无法修改,删除

并发量估计

硬件影响

  • 低配置硬件
    • 当服务器硬件为普通的家用级配置,如 1 - 2 核 CPU、4 - 8GB 内存和机械硬盘时,并发连接数达到 100 - 200 左右,MySQL 可能就会出现性能问题。因为在这种情况下,CPU 处理能力有限,内存不足以缓存大量数据和索引,机械硬盘的读写速度慢,会导致查询响应时间变长,甚至出现卡顿。
  • 中等配置硬件
    • 对于采用 4 - 8 核 CPU、16 - 32GB 内存以及 SSD 硬盘的服务器,在并发连接数达到 500 - 1000 时,可能会接近性能瓶颈。此时,虽然硬件性能有所提升,但随着并发连接数的增加,CPU 可能会出现较高的使用率,内存也可能会出现紧张的情况,SSD 的读写性能也可能无法满足高并发的需求。
  • 高配置硬件
    • 即便使用了高端的 16 核以上 CPU、64GB 以上内存和高性能的 SSD 阵列,当并发连接数达到 2000 - 5000 甚至更高时,单台 MySQL 也可能会面临较大的压力。因为在高并发场景下,除了硬件资源的消耗,还会涉及到锁竞争、事务冲突等问题,进一步影响数据库的性能。

业务类型影响

  • 读多写少业务
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值