mysql基本知识总结

1 mysql 存储引擎

系统构架图:

各个层级介绍: 客户端连接支持的接口(不属于数据库的系统层级): 支持的客户端连接,例如 C、Java、PHP 等语言来连接 MySQL 数据库。 数据库的系统层级:

(1) 网络连接层 连接池:管理、缓冲用户的连接,线程处理等需要缓存的需求。

(2) 核心服务层 管理服务和工具:系统的管理和控制工具,例如备份恢复、复制、集群等。 SQL 接口:接受 SQL 命令,并且返回查询结果。 查询解析器:验证和解析 SQL 命令,例如过滤条件、语法结构等。 查询优化器:在执行查询之前,使用默认的一套优化机制进行优化 sql 语句。 缓存:如果缓存当中有想查询的数据,则直接将缓存中的数据返回。没有的话再重新查 询。

(3) 存储引擎层 插件式存储引擎:管理和操作数据的一种机制,包括(存储数据、如何更新、查询数据 等)

(4) 系统文件层 文件系统:配置文件、数据文件、日志文件、错误文件、二进制文件等等的保存 

引擎的选择:

(1) MyISAM
特点:不支持事务和外键操作。 读取速度快,节约资源
使用场景:以查询操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发
性要求不是很高!
(2) innoDB(mysql5.5 版本以后的默认引擎)
特点: MySQL 的默认存储引擎,支持事务和外键操作
使用场景:对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,读写频
繁的操作!
(3) MEMORY
特点:将所有数据保存在内存中,在需要快速定位记录和其他类似数据环境下,可以提
供更快的访问。
使用场景:通常用于更新不太频繁的小表,用来快速得到访问的结果!
注意: 一般使用数据库默认的引擎就好

2 Mysql 的索引

介绍: 帮助mysql快速获取到数据的一种数据结构,本质上就是数据的存储方式->数据
结构
索引按照功能的分类:
(1) 普通索引:
最基本的索引,没有任何限制。
(2) 唯一索引:
索引列的值必须唯一,但允许有空值。如果是组合索引,则列值组合必须唯一。
(3) 主键索引:
一种特殊的唯一索引,不允许有空值。在建表时有主键列同时创建主键索引。
(4) 联合索引:
顾名思义,就是将单列索引进行组合。
(5) 外键索引:
只有 InnoDB 引擎支持外键索引,用来保证数据的一致性、完整性和实
现级联操作。
(6) 全文索引:
快速匹配全部文档的方式。InnoDB 引擎 5.6 版本后才支持全文索引。MEMORY
引擎不支持。

索引按照功能分类:

(1) BTree 索引:
MySQL 使用最频繁的一个索引数据结构,是 InnoDB 和 MyISAM 存 储引
擎默认的索引类型, 底 层基于 B+Tree 数据结构
(2) Hash 索引:
MySQL 中 Memory 存储引擎默认支持的索引类型。
索引的优缺点:
增删改的操作会变慢,查询的效率会变高,会增大存储空间的开销,以空间换时间

补充:

数据结构->B+树
二叉树和 B+树的区别:
二叉树是自顶向下生成的,B+树是自低向上增长生成的
二叉树每个节点存储一个元素,B 树 B+树每个节点存储多个元素,降低树的高度,提高
查询效率
注意:在 B 树的存储过程中,操作系统会每次从磁盘中读取到一页数据作为 B 树 B+树的节点
数据,降低了 io 和磁盘的交互过程
页:数据单位,在 innodb 中每页大小为 16kB
每个非叶子结点上存储的是键(这个键主要用于根据键搜索值得操作)
B+树的叶子节点存储的是真正数据,采用的是分块方式图示(mysql 主要的查询方式):
解释:
非叶子节点存储的只是数据对应的索引(key),并不存储值,叶子节点存的是主要数据
并且主要数据都是按照顺序排列的,这就形成了按块查询的最优,同时需要知道 B+树
/B 树中的叶子节点组成的链表是双向链表
补充: 系统的磁盘是以磁盘块为单位的

3 mysql 的锁机制

 介绍: 数据库为了保障公共数据的一致性,,在共享的数据资源并发访问时,设置的一种安全规则, 类似于线程中的数据同步 ;

锁机制分类

按照操做分类:
排他锁: 写锁,加了写锁,在该事务(线程)没有操作完成前不允许其他事务(线程)对该
数据进行读和写
共享锁: 读锁,可以多个事务(线程)同时加共享锁,允许其他事务(线程)读,但是在该资
源被加的锁没有被释放前,其他事务(线程)不允许对数据资源进行修改
按粒度分类:
表级锁:会锁定整个表。开销小,加锁快。锁定力度大,发生锁冲突概率高,并发度低。
不会出现死锁情况。
行级锁:会锁定当前行。开销大,加锁慢。锁定粒度小,发生锁冲突概率低,并发度高。
会出现死锁情况。
按使用方式分类:
悲观锁:每次查询数据时都认为别人会修改,很悲观,所以查询时加锁。
乐观锁:每次查询数据时都认为别人不会修改,很乐观,但是更新时会判断一下在
此期间别人有没有去更新这个数据
Mysql 的各种引擎对锁的支持对比

4 数据库中间件( Mycat 中间件):

介绍:涉及到数据的高并发,数据访问量较大,但数据库的访问和并发无法满足需求时, 就需建设数据库集群,后续的步骤专门针对数据库的设计,待待续..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值