MySQL

Mysql表连接的执行流程详解

1. 前言 对于连接操作,驱动表和被驱动表的关联条件我们放在on后面,如果额外增加对驱动表和被驱动表的过滤条件,放到on或者where后面都不会报错,但是得到的结果集却是不一样的??? 1.1 mysql连接的原理 众所周知,mysql是基于嵌套循环连接(...

Mysql中的CHECK约束特性详解

功能说明 在MySQL 8.0.16以前, CREATE TABLE允许从语法层面输入下列CHECK约束,但实际没有效果: CHECK (expr) 在 MySQL 8.0.16,CREATE TABLE添加了针对所有存储引擎的表和列的CHECK约束的核心...

mysql日志系统redo log和bin log介绍

首先,我们先来看看一次查询/更新语句流程图 本文会将重点放在执行器<->存储引擎之间的交互。 mysql不是每次数据更改都立刻写到磁盘,而是会先将修改后的结果暂存在内存中,当一段时间后,再一次性将多个修改写到磁盘上,减少磁盘io成本,同时提高操...

MySQL中的存储过程异常处理

1. condition 2.handler 3.diagnostics area 在使用MySQL存储过程时,其中的代码可能会出现运行错误从而导致异常,此时需要将存储过程中产生的异常捕获并打印出来 需要知道的概念: condition hanlder d...

MySQL优化案例之隐式字符编码转换

索性失效前提 MySQL中我们知道有: 1、如果对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。 2、隐式类型转换也会导致同样的放弃走树搜索。 因为类型转换等价于在条件字段上使用了函数比如: /*假设tradeid字段有索...

MySQL数据库的触发器和事务

一、触发器 概念 触发器是SQL server提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,是由事件来触发。触发器经常用来加强数据的完整性约束和业务规则。 二、 触发器的操作 创建account和account_lo...

MySQL中with rollup的用法及说明

MySQL with rollup的用法 当需要对数据库数据进行分类统计的时候,往往会用上groupby进行分组。 而在groupby后面还可以加入withcube和withrollup等关键字对数据进行汇总。 mysql文档 with rollup概述 ...

MySQL中表锁和行锁机制浅析(源码篇)

[var] 众所周知,MySQL的存储引擎有MyISAM和InnoDB,锁粒度分别是表锁和行锁。 后者的出现从某种程度上是弥补前者的不足,比如:MyISAM不支持事务,InnoDB支持事务。表锁虽然开销小,锁表快,但高并发下性能低。行锁虽然开销大,锁表慢,...

MySQL查询性能优化索引下推

前言 前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种方式索引潜水 MySQL查询性能优化武器之链路追踪 今天要讲的是MySQL的另一种查询性能优化方式 — 索引下推(Index Con...

MySQL子查询的使用详解下篇

相关子查询 相关子查询执行流程 如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为 关联子查询 。相关子查询按照一行接一行的顺序执行,主查询的...