zoukankan      html  css  js  c++  java
  • MySql数据库理解

      在之前的面试过程中,有被问到很多次,关于MySQL数据库相关知识,其中有问到了解存储引擎,数据库优化等问题,问得一脸懵X,确实以前在学习的时候没有去深入了解过这一块儿,今天找到了相应的数据库视频,稍稍做一点点总结。

    一、MySQL数据库的存储引擎分类

      如下图所示:

      

      从上图可以看出,各种存储引擎之间的区别:

        其中MySql5.5版本默认使用的是InnoDB存储引擎。当然,其中也有提到关于锁的概念。

      特别对比:

        MyISAM :存储限制可达256TB,支持索引、表级别锁以及数据压缩。

        InnoDB : 存储限制为64TB,支持事务和索引,锁颗粒为行锁,但并不支持数据压缩,唯独只有它支持外键!

    二、MySQL数据库锁的概念:

      通常,在一个web项目中,对于数据库表查询是很容易产生并发情况的,例如某一个用户正在对其中一张表的t_name字段进行修改,而此时另外一个用户也在对这张表进行查询,那么就很有可能导致读取的用户读到不正确的数据。所以,就产生了表锁。

      其中,我已知的针对数据库表的锁有悲观锁、乐观锁、排他锁、共享锁、表锁、行锁等。

      悲观锁:顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

      乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量。像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。

      更多知识下回分解。。。。。。

  • 相关阅读:
    python练习1--求和
    python--文件操作
    【省选】SDOI2017_树点涂色_LuoguP3703/LOJ2001_LCT/线段树
    【洛谷】P1784 数独
    【洛谷】P2671 求和
    【洛谷】P2261 [CQOI2007]余数求和
    【转载】利用向量积(叉积)计算三角形的面积和多边形的面积
    【洛谷】P1090 合并果子
    【转载】学习C++ -> 类(Classes)的定义与实现
    【洛谷】P2142 高精度减法
  • 原文地址:https://www.cnblogs.com/wgl-gdyuan/p/9922893.html
Copyright © 2011-2022 走看看