开辟新系列,数据库的复习之录。这并不是新的学习,而是一个复习记录。
1. 认识数据库
数据库,即就是数据的管理仓库
在知道数据库之前,我们知道存储的数据信息都是用文件,如doc、xls等,但是文件保存数据会有如下的缺陷:
- 数据的安全性
- 数据的查询问题
- 大量数据的管理问题
上述的问题可以交给数据库了,数据库就像是一个数据的仓库,并带有管理的功能。
2. 数据库的分类
SQL server:微软的产品,.Net程序员的最爱,中大型项目。
Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。
上述的数据库都是学习过的,从操作语句上来说没有太多区别。后面以MySQL为线索进行叙述。
3. mariaDB
MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。
后面使用的也是这个数据库。
这个数据库的历史请参见MariaDB的历史
这个数据库的安装请参见MariaDB的安装
4. 常用存储引擎
存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看引擎
show engines;
从上图可知,MySQL存储引擎主要有:Memory、Mrg_Myisam、CSV、Blackhole、MyIsam、 InnoDB、Archive、Federated、Performance_Schema等。
但是最常用的是InnoDB和Mylsam。
4.1 InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,通过上图也看到了,InnoDB是目前MYSQL的默认事务型引擎,是目前最重要、使用最广泛的存储引擎。支持事务安全表(ACID),支持行锁定和外键。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。
4.2 MyISAM存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT或UPDATE数据时即写操作需要锁定整个表,效率便会低一些。
上述引擎都是采用B+Treee索引结构。