
MySQL
文章平均质量分 71
维护世界和平有我
这个作者很懒,什么都没留下…
展开
-
MySQL预编译
MySQL预编译https://www.freesion.com/article/30881003118/MySQL client发送一条SQL语句到MySQL服务端后,服务端会对SQL进行语法校验、解析等操作,最后才会执行,但是如果对只是参数不同的SQL 每次都进行语法校验、解析等操作,难免会影响性能;所谓预编译就是将一些灵活的参数值以占位符?的形式给代替掉,把参数值给抽取出来,将SQL语句进行模板化。让MySQL服务器执行相同的SQL语句时,不需要在校验、解析SQL语句上面花费重复的时间M原创 2021-05-17 10:44:43 · 781 阅读 · 0 评论 -
MySQL锁 、行锁、表锁、间隙锁、临键锁、共享锁、排它锁、意向锁
文章目录@[toc]行锁记录锁(Record Lock)间隙锁(Gap Locks)产生间隙锁的条件间隙锁设置间隙锁区间范围测试临键锁(Next-key Locks)表锁表锁 的读锁(共享锁)表锁的写锁(排他锁)页锁Innodb意向锁定义意向共享锁(Intent Share Lock,简称 IS 锁)意向排它锁(Intent Exclusive Lock,简称 IX 锁)MySQL死锁等待,直到超时发起死锁检测如何预防死锁行锁使用行锁是,如果匹配条件字段不带有索引时,Innodb会使用表锁;行锁的 共原创 2021-05-14 00:28:40 · 1277 阅读 · 3 评论 -
MySQL MVCC(多版本并发控制)
文章目录@[toc]Innodb MVCC实现原理隐式字段Read View(读视图)例子版本链版本回退undo日志insert undo logupdate undo logMVCC与二级索引(辅助索引)Innodb MVCC实现原理MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。mvcc的主要是为了提高并发读写能力,不用加锁就能让多个事物并发读写官网对mvcc的介绍:https://dev.mysql.com/doc/refman/5.7/e原创 2021-05-14 00:26:21 · 688 阅读 · 1 评论 -
数据库3范式
文章目录@[toc]第一范式(1NF)第二范式(2NF)第三范式(3NF)第一范式(1NF)强调的是列的原子性,即列不能够再分成其他几列。这样一个表:【联系人】(姓名,性别,电话)如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。要符合 1NF 我们只需把列(电话)拆分,即:【联系人】(姓名,性别,家庭电话,公司电话)。第二范式(2NF)第二范式包含 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖原创 2021-05-14 00:21:44 · 622 阅读 · 0 评论 -
事务、事务的隔离级别、一致性
文章目录事物原子性一致性隔离性持久性MySQL如何保证事务的ACID事务的隔离级别重要概念脏读不可重复读幻读Read uncommitted读未提交Read committed 读已提交Repeatable read 可重复读(MySQL默认)注意Serializable 串行化事物定义:数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做;事务具有原子性、一致性、隔离性、持久性。https://www.runoob.com/mysql/mysql-tr原创 2021-05-14 00:22:18 · 1346 阅读 · 0 评论 -
MySQL独立表空间、共享表空间
文章目录@[toc]系统表空间(共享表空间)独立表空间表结构定义文件 .frm,是Mysql数据库本身的文件,和存储引擎无关。表空间文件 .ibd。系统表空间(共享表空间)https://dev.mysql.com/doc/refman/5.7/en/innodb-system-tablespace.html系统表空间用于存储 doublewrite buffer,change buffer, undo logs;如果在system tablespace下建表,那么系统表空间里也会存储表数据原创 2021-05-13 14:03:49 · 1030 阅读 · 0 评论 -
innodb 关键特性、缓冲池、插入缓冲、两次写
文章目录@[toc]Buffer Poolbuffer pool对内存的管理Free ListLRU ListLRU(least recently used)算法Flush ListInnodb关键特性Insert Buffer插入缓冲Insert Bufferchange bufferinsert buffer的内部实现double write 两次写自适应哈希索引(Adaptive Hash Index,AHI)刷新临近页Buffer PoolInnoDB存储引擎是基于磁盘存储的,并将其中的数据按照原创 2021-05-13 14:02:46 · 1067 阅读 · 0 评论 -
redo log
文章目录@[toc]redo logredo log基本概念日志块(log block)日志块头log body(redo log的格式)redo log group和redo log fileredo log groupredo log file日志刷盘的规则数据页刷盘的规则redo log作用redo log 和 bin log 的区别redo logredo log 用于记录事务操作的变化,记录的是sql语句执行之后数据页上的具体修改内容。redo log是innodb引擎独有,redo log原创 2021-05-13 13:58:50 · 1288 阅读 · 1 评论 -
bin log
文章目录@[toc]bin log 概述开启 bin logbin log 作用bin log模式ROW(行模式)Statement(语句模式):Mixed(混合模式)bin log的刷盘时机https://www.cnblogs.com/reecelin/articles/13504084.htmlbin log 概述bin log ,即binary log 以二进制的形式存储在磁盘上,逻辑日志(记录所有的DDL(对表的操作)和DML语句,DML的select除外,即 记录导致数据库变化的sql语原创 2021-05-13 13:55:58 · 705 阅读 · 0 评论 -
undo log、rollback segment
文章目录@[toc]rollback segmentdelete/update操作的内部机制undo log有两个作用:提供回滚和MVCundo log主要记录了数据的逻辑变化,例如当INSERT一条记录时,则undo log记录一条DELETE记录; 当UPDATE一条记录时,则undo log记录一条相反的 UPDATE记录;当delete一条记录时,则undo log记录一条insert记录;innodb中 undo log分为2种: insert undo log :insert原创 2021-05-13 13:55:10 · 1450 阅读 · 1 评论 -
join原理、join算法
文章目录@[toc]MySQL Join算法Simple Nested-Loop Join 简单嵌套循环连接Index Nested-Loop Join 索引嵌套循环连接Block Nested-Loop Join 缓存块嵌套循环连接Join Buffer如何优化Join速度https://blog.youkuaiyun.com/u014756578/article/details/52795545MySQL Join算法MySQL使用Nested-Loop Join(嵌套循环连接)算法优化Join;在Mysq原创 2021-05-13 13:53:47 · 751 阅读 · 0 评论 -
MySQL慢查询
文章目录开启和设置MySQL慢查询通过命令(全局变量设置)配置文件设置注意分析慢查询日志https://blog.youkuaiyun.com/qq_35571554/article/details/82800463开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句;通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。开启和设置MySQL慢查询可以通过配置文件或者命令开启MySQL慢查询;查看慢查询相关参数mysql> show variables like 'slow_que原创 2021-05-13 13:51:18 · 1364 阅读 · 1 评论 -
MySQL索引实现、MySQL索引原理、索引下推、索引覆盖、索引失效
文章目录索引实现InnoDB索引实现InnoDB的主键索引InnoDB的辅助索引MyISAM索引实现Innodb索引和MyISAM索引的区别其它索引数据结构hash索引的缺点B+树和二叉查找树的性能对比B+对比B树的优点其它关于索引数据结构的问题为什么数据库索引不用红黑树而用B+树索引失效条件中or前后没有同时使用索引,索引失效like 以%开头,索引失效组合索引,不是使用第一列索引,索引失效数据类型出现隐式转化,索引失效其它情况不推荐使用索引的情况覆盖索引组合索引最左匹配原则注意组合索引数据结构索引下推谓原创 2021-05-13 13:50:13 · 1239 阅读 · 0 评论 -
MySQL索引入门 普通索引 唯一索引
文章目录使用索引创建索引删除索引显示索引信息普通索引唯一索引unique与primary key的区别全文索引组合索引参考使用索引创建索引创建索引有3种方式在创建表时指定索引;CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 修改表结构时添加索引;ALTER table tableName AD原创 2021-03-11 15:09:07 · 660 阅读 · 0 评论