技术日志挑战——第14天:0806

2024-08-06 22:00:15 浏览数 (1)

技术总结:

今天是周二,带老婆去了趟单位,中午一起吃了饭,美滋滋。

明天老婆就要去培训了,自由了,嘿嘿嘿。

今天我发现我项目里的代码有点问题,似乎我的轨迹设计部分有问题,今天又重新生成了一下,发现问题少了很多,看来是我的轨迹设计有点问题。

今天把问题梳理了一下,明天应该能解决这个问题,把后置的部分搞定。

学习笔记:


1.MyISAM 只有表级锁,而InnoDB 支持行级锁和表级锁,默认为行级锁;

2.MyISAM 不提供事务支持。而InnoDB提供事务支持;

3.MyISAM不支持外键,而InnoDB支持;

4.MyISAM不支持聚集索引,InnoDB支持聚集索引;

5MyISAM不支持MVCC,InnoDB支持。应对高并发事务,MVCC比单纯的加锁更高效;

特性

InnoDB

MyISAM

事务安全

支持

存储限制

64TB

空间使用

内存使用

插入数据的速度

对外键的支持

支持

1.是否支持行级锁

MyISAM 只有表级锁,而InnoDB 支持行级锁和表级锁,默认为行级锁。

(1)MySQL大致可以归纳为以下3种锁

  • 表级锁:开销小,加锁快;不会出现死锁;锁的粒度大,发生锁冲突的概率最高,并发度最低。
  • 行级锁:开销大,加锁慢;会出现死锁;锁的粒度小,发生锁冲突的概率最低,并发度最高。
  • 页面锁:开销 和加锁时间界于表锁和行锁之间;会出现死锁,锁定的粒度界于表锁和行锁之间,并发一般。

(2)表锁

MyISAM会在执行select语句前,会自动给涉及的表加读锁,在执行增删改操作前会自动给涉及的表加写锁。

  • MySQL的表锁有两种模式:
    • 表共享读锁
    • 表独占写锁
  • 读锁会阻塞写,写锁会阻塞读和写。
    • 对MyISAM表的读操作,不会阻塞其它进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其它线程的写操作。
    • 对MyISAM表的写操作,会阻塞其它进程对同一表的读和写操作,只有当写锁释放后,才会执行其它进程的读写操作。

0 人点赞