MySQL结构
1 存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
分类:
InnoDB :5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定
BDB: 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
![](https://img2018.cnblogs.com/common/1904014/201912/1904014-20191228143953556-992781237.jpg)
2 MySQL 物理结构 (日志文件和数据文件)
一 :日志文件:
(1)日志文件是用来记录事务对数据库的更新操作的文件。
(2)设立日志文件的目的是: 进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
(2)设立日志文件的目的是: 进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
(3)日志级别:ALL < trace < debug < info < warn < error < fatal < OFF
(4)常用的日志文件有:
- 事务日志(redo log)
- 二进制日志(binlog)
- 错误日志(errorlog)
- 慢查询日志(slow query log)
- 通用查询日志(general log)
- 中继日志(relay log)
一、错误日志(errorlog)
错误日志是软件用来记录运行时出错信息的文本文件。编程人员和维护人员等可以利用错误日志对系统进行调试和维护。
二、二进制日志(binlog ,重要的点)
mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容。
binlog 可以用于实现mysql主从复制和数据恢复
binlog配置
三、通用查询日志 (general log)
四、慢查询日志 (slow query log)
五、事务日志 (redo log)
六、中继日志 (redo log)
二 :数据文件 :
数据库文件 顾名思义就是指电脑上储存数据的文件。
查看数据库文件:mysql> show
global
variables
like
"%datadir%"
;
3 :索引
索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。
例如这样一个查询:select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位的。
索引分类:
一:唯一索引:
唯一索引是不允许其中任何两行具有相同索引值的索引。当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee表中职员的姓(lname)上创建了唯一索引,则任何两个员工都不能同姓。
二:主键索引:
数据库表经常有一列或多列组合,其值唯一标识表中的每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。
记住:一个表只能有一个主键。
三:组合索引:
即一个索包含多个列。
三:单列索引:
即一个索包含多个列。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;
索引目的:
索引的一个主要目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。加快对表中记录的查找或排序。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。数据库索引就是为了提高表的搜索效率而对某些字段中的值建立的目录 。
创建索引
CREATE INDEX indexName ON mytable(username(length));
如果是 CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。
删除索引的语法:
DROP INDEX [indexName] ON mytable;
索引存储:
索引存储,分别存放数据元素和元素间关系的存储方式。
有的存储结点存放在一个区域。另设置一个索引区域存储结点之间的关系。
索引组成:
索引区由若干索引项组成。若每个存储结点在索引表中都有一个索引项,则该索引表称“稠密索引”;若一组存储结点在索引表中只对应于一个索引项,则该索引表称“稀疏索引”