随笔分类 - DB / DB-Mysql
摘要:关于MVVC MySQL InnoDB存储引擎,实现的是基于多版本的并发控制协议——MVCC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)。MVCC最大的好处:读不加
阅读全文
摘要:参考: 写给程序员的 MySQL 面试高频 100 问!建议收藏! 数据库面试没那么难,不信你看这24道题! 可能是全网最好的MySQL重要知识点 | 面试必备 mysql数据库开发常见问题及优化
阅读全文
摘要:参考: 开发人员不得不知的MySQL索引和查询优化 如何避免回表查询?什么是索引覆盖? | 1分钟MySQL优化系列
阅读全文
摘要:相关知识介绍 多版本并发控制 在MySQL默认存储引擎InnoDB中,实现的是基于多版本的并发控制协议——MVCC(Multi-Version Concurrency Control)(注:与MVVC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)。 其中M
阅读全文
摘要:表锁和行锁 我们首先来了解一下表锁和行锁:表锁是指对一整张表加锁,一般是 DDL 处理时使用;而行锁则是锁定某一行或者某几行,或者行与行之间的间隙。 表锁由 MySQL Server 实现,行锁则是存储引擎实现,不同的引擎实现的不同。在 MySQL 的常用引擎中 InnoDB 支持行锁,而 MyIS
阅读全文
摘要:什么是间隙锁 间隙锁(Gap Lock)是Innodb在可重复读提交下为了解决幻读问题时引入的锁机制。 当用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁; 对于键值在条件范围内但不存在的记录,叫做“间隙(GAP)”,InnoDB也会对这些“
阅读全文
摘要:druid数据库连接池 http://www.apache-druid.cn/ https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 Re手册-工具篇 -Druid连接池 参考文章 用了这么久的数据库连接
阅读全文
摘要:聚集索引,非聚集索引 InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引: (1)如果表定义了PK,则PK就是聚集索引; (2)如果表没有定义PK,则第一个not NULL unique列是聚集索引; (3)否则,InnoDB会创建一个隐藏的row-id作为聚
阅读全文
摘要:参考文章 全网最完整MongoDB 与 MySQL对比 后端接口如何提高性能?从MySQL、ES、HBASE等技术一起探讨下! 一个小小的签到功能,到底用MySQL还是Redis? 再见,MySQL! 点赞功能,用 MySQL 还是 Redis 好 ? 点赞功能,用 MySQL 还是 Redis ?
阅读全文
摘要:如何防止sql注入的产生 1 严格检查变量的类型和格式,特别是最终会改变数据库的遍历 2 特殊字符的转义,防止特殊字符最终成为sql的语法一部分,从而改变sql的语法 3 绑定变量,使用sql与便于。 sql 预编译,对于常用的语法模板,可以提供预编译,这样输入的参数无论怎样改变,也不会影响sql执
阅读全文
摘要:参考文章 这 6 个 MySQL 死锁案例,让你彻底理解死锁的原因! 一条简单的更新语句,MySQL是如何加锁的? 阿里云面试官:说说MySQL的锁有那些类型,以及加锁的原理? 一文讲透MySQL 加锁和死锁的机制 聊一聊数据库中的锁 一条简单的更新语句,MySQL是如何加锁的? MySQL死锁产生
阅读全文
摘要:参考文章 选择合适的 MySQL 日期时间类型来存储你的时间 老生常谈!数据库如何存储时间?你真的知道吗? MySQL中时间类型 - datetime、bigint、timestamp的查询效率比较 mysql 数据类型 面试题:mysql 数据类型 选择合适的 MySQL 日期时间类型来存储你的时
阅读全文
摘要:Mysql逻辑架构图 Mysql逻辑架构图主要分三层: 1) 第一层负责连接处理,授权认证,安全等等 每个客户端连接都会在服务器进程中拥有一个线程,服务器维护了一个线程池,因此不需要为每一个新建的连接创建或者销毁线程。 当客户端连接到Mysql服务器时,服务器对其进行认证,通过用户名和密码认证,也可
阅读全文
摘要:主从复制原理 主从复制原理,简言之,就三步曲,如下: 主数据库有个bin-log二进制文件,纪录了所有增删改Sql语句。(binlog线程) 从数据库把主数据库的bin-log文件的sql语句复制过来。(io线程) 从数据库的relay-log重做日志文件中再执行一次这些sql语句。(Sql执行线程
阅读全文
摘要:mysql 知识点 一千行 MySQL 学习笔记 可能是全网最好的MySQL重要知识点 | 面试必备 面试题总结:可能是全网最好的MySQL重要知识点 MySQL 面试高频一百问(工程师方向) 两万字的数据库面试题,不看绝对后悔 面试官问,为什么建议MySQL列属性尽量用 NOT NULL ? 一千
阅读全文
摘要:•Github 地址 : https://github.com/seata/seata •star: 9.2 k (776 stars this month) •介绍: Seata 是一种易于使用,高性能,基于 Java 的开源分布式事务解决方案。
阅读全文
摘要:MySQL的多存储引擎架构 这里先有个整体的MySQL Server的整体概念,详情转向:MySQL的多存储引擎架构 1. 什么是事务 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 AUTOCOMMIT MySQL 默认 自
阅读全文
摘要:参考: 分库分表的4个面试连环炮问题!不会就惨了! 面试官:分库分表之后,id 主键如何处理? 扎心一问:分库分表就能无限扩容吗
阅读全文
摘要:参考: 不用找了,大厂在用的分库分表方案,都在这了! 数据库之互联网常用分库分表方案 数据库分库分表解决方案汇总 一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。 在业务Service来看就是,可用数据库连接少甚至无连
阅读全文
摘要:参考: 分库分表?如何做到永不迁移数据和避免热点? 一、前言 中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。 垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。 水平拆分的概念,是同一个
阅读全文