MySQL存储引擎

MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎,每种存数引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。

并发处理

并发控制

当多个连接对记录进行修改时保证数据的一致性和完整性。

  • 共享锁(读锁):在同一时间内,多个用户可读取同一个资源,读取过程中数据不会发生任何变化。
  • 排他锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。

锁的力度(锁颗粒–锁定时的单位)

  • 表锁,是一种开销最小的锁策略。对表进行写锁,所有用户不能对该表的任何记录操作。
  • 行锁,是一种开销最大的锁策略。并行性最大,可能对表的所有记录写锁,开销大。

事务处理

事务处理

整个过程每一个单元全部完成才算事务处理成功,某一个单元失败事务就会回滚。

主要作用

保证数据库的完整性

特性

  • 原子性(Atomic):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • 一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
  • 隔离性(Isolation):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
  • 持久性(Durable):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

简称:ACID

外键

是保证数据一致性的策略

索引

是对数据表中一列或者多列的值进行排序的一种结构。
索引好比目录。
索引可以划分为:普通索引、唯一索引、全文索引、btree索引、hash索引。

各种存储引擎的特点

MySQL支持的存储引擎

MyISAM、InnoDB、Memory、CSV、Archive

MyISAM/InnoDB:最广泛
MyISAM:适用于事务的处理不多的情况。
InnoDB:适用于事务处理比较多,需要有外键支持的情况。

设置存储引擎

  1. 修改MySQL配置文件实现

    1
    default-storage-engine = engine_name
  2. 创建数据表命令来实现

    1
    2
    3
    CREATE TABLE tbl_name(
    ...
    ) ENGINE = engine_name;
  3. 修改数据表命令实现

    1
    ALTER TABLE tbl_name ENGINE [=] engine_name;