• MySql数据库理解


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

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

      如下图所示:

      

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

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

      特别对比:

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

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

    二、MySQL数据库锁的概念:

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

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

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

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

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

  • 相关阅读:
    自动配置原理5
    JSR303数据校验4
    mysql 安装(压缩包安装和exe安装)
    jQuery关于复制(复制隐藏文字+显示文字)跳转,Clipboard
    html页面设置一个跟随鼠标移动的DIV(jQuery实现)
    js中将时间(如:2017-10-8 22:44:55)转化为时间搓,时间戳转为标准格式时间
    异常:java.lang.IllegalArgumentException: Control character in cookie value or attribute.
    从数据库导出数据到excel之List<List<Object>>导出
    从数据库导出数据到excel之List<map>导出
    从数据库导出数据到excel之POI操作
  • 原文地址:https://www.cnblogs.com/wgl-gdyuan/p/9922893.html
Copyright © 2020-2023  润新知