关于Mysql数据库

来源:互联网 发布:短期迅速提高算法题 编辑:程序博客网 时间:2024/05/18 00:49

1、首先从mysql存储引擎说起、什么是存储引擎呢?在mysql中、存储引擎是指存储mysql数据表的不同的存储技术、这样可以满足不同的业务需求

      常见的mysql存储引擎(存储技术):innoDB、memory、MyISAM

2、innoDB的特点:支持事务、支持外键、支持自动增长列

      优点:提供良好的事务处理、崩溃修复和并发控制

      缺点:读写效率差、占用空间大

      业务场景:传统的严格要求事务一致性的场景、比如银行的转账汇款、要求并发控制,需要频繁进行更新、删除操作的数据库

3、memory的特点:数据存储到内存

      优点:处理速度非常快

      缺点:数据容易丢失、生命周期短

      场景:适合应用程序、需要初始化或不会变动的数据、对数据的安全性要求较低,使用相对较小的数据库表

4、MyISAM的特点:数据存取带索引、frm存储表结构、myd存储数据、myi存储索引

      优点:占用空间小、处理速度快

      缺点:不支持事务的完整性和并发性

      场景:对事务没要求、并需要高速存取数据的场景(类似HBase的场景)、应用完整性、并发性要求很低

5、ACID特性:数据库事务正确执行的四个特性

      5.1、原子性(Atomicity)

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

    5.2、一致性(Consistency)

在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

      5.3、隔离性(Isolation)

两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。

    5.4、持久性(Durability)

在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新 以及修改的资料一次操作完毕,但实际上并不可行。

6、目前实现ACID的方式有两种:第一种是Write ahead logging,也就是日志式的方式。第二种是Shadow paging。第一种WAL(预写入)的方式比较常用。

0 0