【MySQL】
mysql深入
RobertLab
全栈不是一个岗位,而是一种思维。
展开
-
【MySQL】第十三篇:MySQL锁
mysql锁划分按照锁的粒度划分:行锁、表锁、页锁按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现)还有两种思想上的锁:悲观锁、乐观锁。InnoDB中有几种行级锁类型:Record Lock、Gap Lock、Next-key LockRecord Lock:在索引记录上加锁Gap Lock:间隙锁Next-key Lock:Record Lock+Gap Lock一、行锁行级锁是 MySQL 中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的转载 2020-08-08 23:46:40 · 551 阅读 · 1 评论 -
【MySQL】第十二篇:MySQL视图和存储过程
一、视图1.1、什么是视图视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select 语句保存在数据字典中的。通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。基表:用来创建视图的表叫做基表(base table)1.2、为什么要使用视图因为视图的诸多优点,如下:简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。安全:使用视图的用户只能访问他们被允许查询的原创 2020-08-08 14:41:49 · 774 阅读 · 0 评论 -
【MySQL】第十一篇:MySQL索引原理
一、索引是什么索引是帮助MySQL、Kafka、ES等组件高效获取数据的数据结构。本文针对的是MySQL的索引二、索引能干什么提高数据查询、排序的效率。索引:排好序的快速查找数据结构!索引会影响 where 后面的查找,和 order by 后面的排序。三、索引的分类从数据结构上来划分:Hash索引,BTree索引(B-Tree或B+Tree索引)描述的是索引存储时保存的形式从应用层次来分:普通索引,唯一索引,复合索引。普通索引:即一个索引只包含单个列,一个表可以有多个单列索引原创 2020-08-08 10:18:45 · 266 阅读 · 0 评论 -
【MySQL】第十篇:MySQL事务详解
事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。一、基础概念事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务,本文介绍基于MySQL5.6。首先回顾一下MySQL事务的基础知识。1.1、逻辑架构和存储引擎如上图所示,MySQL服务器逻辑架构从上往转载 2020-08-07 13:13:06 · 326 阅读 · 1 评论 -
【MySQL】第九篇:慢查询日志截取及处理
一、慢查询日志慢查询日志是什么MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,原创 2020-08-06 14:28:50 · 513 阅读 · 0 评论 -
【MySQL】第八篇:MySQL的查询优化
建表语句:建表语句一、关联表查询优化1.1、left join结论:在优化关联查询时,只有在被驱动表上建立索引才有效!在优化关联查询时,要使用小表(驱动表)驱动大表(被驱动表),这样效率更高left join 时,左侧的为驱动表,右侧为被驱动表;类比得出, right join 时,左侧为被驱动表;1.2、inner join结论:inner join 时,mysql 会自己帮你把小结果集的表选为驱动表。二、Not In 优化结论:在范围判断时,尽量不要使用 not in 和 n原创 2020-08-06 14:10:10 · 178 阅读 · 0 评论 -
【MySQL】第七篇:索引失效常见场景
案例对 city 表创建联合索引:mysql> desc city;+-------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+--------------+------+-----+---------+----------------+| i原创 2020-08-05 19:23:45 · 326 阅读 · 1 评论 -
【MySQL】第六篇:MySQL之详解 Explain
一、概念使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的。分 析你的查询语句或是表结构的性能瓶颈。用法:explain+SQL 语句explain 执行返回后的信息如下:下面针对返回后的信息详细说明,准备工作:本文基于MySQL 8.0.19,不同的版本 explain 会不同省市区的级联sql:脚本下载地址二、explain 结果解析2.1、idselect 查询的序列号,是一组数字,表示查询中执行 select 子原创 2020-08-05 16:00:19 · 309 阅读 · 0 评论 -
【MySQL】第五篇:MySQL之索引介绍
一、索引MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。 可以得到索引的本质:索引是数据结构。可以简单理解为排好序的快速查找数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。下图就是一种可能的索引方式示例:左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址。为了加快 Col2 的查找,可以维护一个 右边所示的二叉查找原创 2020-08-04 16:28:46 · 260 阅读 · 0 评论 -
【MySQL】第四篇:MySQL的Join
一、常见的Join查询图七种SQL Join:二、Join示例数据CREATE TABLE `t_dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT NULL, `address` VARCHAR(40) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE = INNODB AUTO_INCREMENT = 1 CHARSET = utf8;CREATE原创 2020-08-04 14:40:51 · 218 阅读 · 0 评论 -
【MySQL】第三篇:MySQL逻辑架构简介
一、整体架构图和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。1.1、连接层最上层是一些客户端和连接服务,包含本地 sock 通信和大多数基于客户端/服务端工具实现的类似于 tcp/ip 的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户原创 2020-08-04 12:12:45 · 223 阅读 · 1 评论 -
【MySQL】第二篇:MySQL的用户和权限管理
一、MySQL用户管理MySQL版本:Ver 8.0.191.1、相关命令命令描述备注create user wells identified by ‘123456’;创建用户名为 wells,密码为 123456 的用户select host,user,authentication_string,select_priv,insert_priv,drop_priv from mysql.user;查看用户权限和相关信息update user set authe原创 2020-08-04 10:18:19 · 274 阅读 · 0 评论 -
【MySQL】第一篇:MySQL简介
一、什么是 MySQLMySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是开源的,可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。MySQL使用标准的SQL数据语言形式。MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,原创 2020-08-01 09:16:16 · 178 阅读 · 0 评论