mysql中继_MySQL(二)

MySQL架构

d9f60c7157a245c408354d396efc21cd.png

执行流程

4cb2834d5c7bf2d6aea699d739a23655.png

存储引擎介绍

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

多存储引擎是mysql有别于其他数据库的一大特性;

存储引擎是针对表的

MySQL 5.5之后,默认的存储引擎由MyISAM变为InnoDB。

查看存储引擎:show engines;

MySQL物理结构

MySQL是通过文件系统对数据进行存储和管理的。

MySQL从物理结构上可以分为日志文件和数据文件。

日志文件

MySQL通过日志记录了数据库操作信息和错误信息。常用的日志文件包括错误日志、二进制日志、查询日志、慢查询日志和 InnoDB 引擎在线 Redo 日志、中继日志等。

查询日志(general query log):

默认情况下通用查询日志是关闭的。

由于通用查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响mysql的性能的。如若不是为了调试数据库的目的建议不要开启查询日志。

事务日志:

它存储对数据库进行的所有更改,并全部记录插入、更新、删除、提交、回退和数据库模式变化。事务日志还称作前滚日志或重做日志。

在缺省情况下,所有数据库都使用事务日志。事务日志的使用是可选的,但是,除非您因特殊原因而不使用,否则您应始终使用它。运行带有事务日志的数据库可提供更强的故障保护功能、更好的性能以及数据复制功能。

中继日志:

是在主从复制环境中产生的日志。

主要作用是为了从机可以从中继日志中获取到主机同步过来的SQL语句,然后执行到从机中。

数据文件

查看MySQL数据文件:SHOW VARIABLES LIKE '%datadir%';

.frm文件:主要存放与表相关的数据信息,主要包括表结构的定义信息。

.ibd和.ibdata文件:用来存储InnoDB存储引擎的表数据和索引信息。

.myd文件:主要用来存储使用MyISAM存储引擎的表数据信息。

.myi文件:主要用来存储使用MyISAM存储引擎的表数据文件中任何索引的数据树。

MySQL索引

介绍

使用索引的主要目的是为了优化查询速度

索引是一种特殊的文件或者叫数据结构(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。

索引的分类

单列索引:

普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

唯一索引:索引列中的值必须是唯一的,但是允许为空值。

主键索引:是一种特殊的唯一索引,不允许有空值。

组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。

组合索引(name,age,address)

正确可以使用组合索引的语句select * from 表名 where name = 'zhangsan' and age = 18 andaddress= '×××路'

select * from 表名 where name = 'zhangsan' and age = 18

select * from 表名 where name = 'zhangsan'不能正确使用组合索引的语句select * from 表名 where name = 'lisi' and address = '×××路'

select * from 表名 where age = 18 adn name = 'lisi'

全文索引:全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。

索引的使用

创建索引

CREATE INDEX index_name ON table(column(length))ALTER TABLE table_name ADD INDEX index_name ON (column(length))CREATE UNIQUE INDEX index_name ON table(column(length))CREATE FULLTEXTINDEX index_name ON table(column(length))ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))

删除索引

DROP INDEX index_name ON table

非聚集索引

叶子节点只会存储数据行的指针,简单来说数据和索引不在一起,就是非聚集索引。

主键索引和辅助索引都会存储指针的值

聚集索引

主键索引(聚集索引)的叶子节点会存储数据行,也就是说数据和索引是在一起,这就是聚集索引。

辅助索引只会存储主键值

如果没有没有主键,则使用唯一索引建立聚集索引;如果没有唯一索引,MySQL会按照一定规则创建聚集索引使用索引的注意事项

8fabd50011c478bb803ed0be9a643bc9.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值