首页 > 技术文章 > Mysql的学习整理

chsblog 2021-11-03 14:36 原文

Mysql简介

Mysql 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

数据库的三范式

第一范式:强调的是列的原子性,即数据库表中的每一列都是不可分割的原子数据项。

第二范式:要求实体的属性完全依赖关键字。不能仅依赖部分。

第三范式:任何非主属性不依赖其他非主属性。

Mysql的存储引擎

Mysql支持多种存储引擎,比如InnoDB、MyLSAM,Memory、Archive等。但是一般来说Mysql主要用innoDB,也是默认的存储引擎。

这里介绍常见的两种存储引擎InnoDB和MyLSAM的区别

 

InnoDB支持事务 MylSAM不支持事务
InnoDB支持外键 MylSAM不支持外键
InnoDB是聚集索引 MylSAM是非聚集索引
InnoDB不支持全文索引 MylSAM支持查询效率高
InnoDB不保存标的具体行数 MylSAM用一个变量保存了整个表的行数

 

 

 

 

 

 

 

 

这里引入介绍下索引相关知识:

什么是索引

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它包含着对数据库表里所有记录用的引用指针。

索引(index)就像一本书的目录一样,包含这书里的关键信息。对于每一个部分都能精准指向它所在的地址。

 

索引的建立,对于数据库的高效运行有很大的提升,能够大大提升检索速度。使用优化隐藏器,提高系统的西能。

缺点:时间上,创建和维护需要耗费时间,具体地对表中数据进行增加删除修改时,也需要动态的维护,会降低增/改/删的效率

          空间上,占有一定的内存。

不过比较得来索引的创建利大于弊。

MySQL的索引类型

1、从存储结构上划分:BTree索引、Hash索引等。

2、从应用层次来划分:普通索引,唯一索引,复合索引。

3、从数据物理顺序和键值的逻辑顺序:聚集索引,非聚集索引。

创建索引的方式

1、在执行CREATE TABLE时创建索引。

例:CREATE TABLE user_index

2、使用ALTER TABLE命令去增加索引(创建普通索引、UNIQUE索引或PRIMARY索引)

例:ALTER TABLE table_name ADD INDEX index_name(,,)

3.使用CREATE INDEX命令创建

CREARE INDEX index_name ON table_name ()

 

下面介绍下数据库的事务

什么是数据库的事务


事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须数据库从一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。

其具有以下四个特征:

1.原子性。事务是数据库的逻辑工作单位,事务中包含各操作要么都做,要么都不做。

2.一致性。事务执行的结果必须是使数据库从一个一致性状态变成另一个状态。

3.隔离性。一个事务不能被其他事务干扰。

4.持续性。也称为永久性,指一个事务一旦提交,他对数据库改变就是永久性的。

 

什么是Mysql的binlog?

binlog记录所有数据库表结构的变更(create、alter)以及dml的(INSERT,UPDATE,DELETE)二进制日志。binlog不会记录SELETE和SHOW的操作,因为其对数据库数据没有修改。

以事件形式记录,还包含语句所消耗的时间。是事务安全型的主要目的是复制和恢复。

 

推荐阅读