zoukankan      html  css  js  c++  java
  • MySQL引擎

    1、引擎分类

      1.1 InnoDB

        是系统的默认引擎,是一个事务型的存储引擎,有行级锁定和外键约束。

      1.2 MyISAM

        没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT(插入)或UPDATE(更新)数据时即写操作需要锁定整个表,效率便会低一些。

      1.3 Archive

        档案存储引擎只支持INSERT和SELECT操作,适合日志和数据采集类应用,占空间小。

      1.4 Blackhole

        不保存数据;

      1.5 CSV

        可以将普通的CSV文件作为MySQL表处理,但不支持索引;

        可以作为一种数据交换的机制,非常有用。

      1.6 Memory、Merge、Federated(略)

    2、InnoDB和MyISAM的对比

      MyISAM InnoDB
    外键 不支持 支持
    事务 不支持 支持
    行/表锁

    表锁,即使操作一条记录也会锁住整个表,不适合高并发操作

    行锁,操作时只锁一行,不对其他行有影响,适合高并发的操作

    缓存 只缓存索引,不缓存真实数据 不仅缓存索引还缓存真实数据,对内存要求较高,而且内存大小队性能有决定性影响
    关注 节省资源、消耗少,简单业务 并发写、事务、更大资源

    3、事务(Transaction)

      3.1 为什么需要事务?

        为保持数据的一致性。

        例如A给B转1000,这是一个操作,数据库层面A会执行 -1000,B也要执行+1000;两个sql操作一个没成功就会让数据变得异常,会导致后续的一系列问题。

      3.2 事务的ACID原则

        原子性(atomicity):

          一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

        一致性(consistency):

          在事务开始之前和事务结束之后数据库中数据的完整性没有被破坏,(比如:A向B转账,不可能A扣了钱,B却没有收到);

        隔离性(isolation):

          一个事务的执行不被其他事务影响;

        持久性(durability):

          事务一旦提交,无论系统发生什么问题,结果都不会被影响;

    4、为什么InnoDB必须有主键,并且推荐使用整型的自增主键

      因为InnoDB的底层数据结构是B+Tree,必须需要一个主键才可以组织起来(主键值去做节点数据,表数据存储在叶子节点)。如果表没有设置主键,则Mysql会自动的帮你找到一个合适的唯一索引作为主键,若找不到符合条件唯一索引条件的字段时,会生成类似于ROW_ID的虚拟列充当该InnoDB表的主键;

      整型的存储比字段类型要小,对比效率是高于其他数据结构的,字符串等。

      自增的话每次新增的索引就是有序的,只需要在最右边的数据中插入新的数据即可。插入的时候效率更高。

      

      

  • 相关阅读:
    返回一个整数数组中最大子数组的和 1
    软件工程第一周开课博客
    体温上报系统总结
    Android 布局中如何使控件居中
    Android:Unable to find explicit activity class报错
    Android Studio 线性布局
    相对布局
    HTML5 video视频
    阅读笔记——《人月神话》
    体温汇报系统界面
  • 原文地址:https://www.cnblogs.com/xp2h/p/12458569.html
Copyright © 2011-2022 走看看