MySQL提升笔记(4)InnoDB存储结构

这一节本来计划开始索引的学习,但是在InnoDB存储引擎的索引里,存在一些数据存储结构的概念,这一节先了解一下InnodDB的逻辑存储结构,为索引的学习打好基础。 从InnoDB存储引擎的存储结构看,所有数据都被逻辑地放在一个空间中,称之为表空间(tablespace)、区(extent)、页(pa ... »

一个诡异的MySQL查询超时问题,居然隐藏着存在了两年的BUG

这一周线上碰到一个诡异的BUG。 线上有个定时任务,这个任务需要查询一个表几天范围内的一些数据做一些处理,每隔十分钟执行一次,直至成功。 通过日志发现,从凌晨5:26分开始到5:56任务执行了三次,三次都因为SQL查询超时而执行失败,而诡异的是,任务到凌晨6:00多就执行成功了。 每天都是凌晨五点多 ... »

MySQL提升笔记(3)日志文件详解

在MySQL数据库和InnoDB存储引擎中,有很多种文件,如:参数文件、日志文件、socket文件、pid文件、MySQL表结构文件、存储引擎文件。 本节重点关注日志文件,MySQL的复制、事务等重要功能都和日志文件相关。日志文件主要包括错误日志文件、二进制日志文件、慢查询日志文件、查询日志文件、重 ... »

MySQL提升笔记(2):存储引擎盘点

在前面我们了解了server层调用存储引擎层接口来完成sql的执行,使用存储引擎的好处是:每个存储引擎都有各自的特点,能够根据具体的应用建立不同存储引擎表。 需要注意的是,存储引擎是基于表的,而不是数据库。 MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、 ... »

你真的了解Innodb存储引擎?

前言 前几篇记录了如何查看SQL执行计划、数据库事务相关的知识点 除了这两个,数据库还有两个是非常重要的,必须要考的 就是存储引擎和索引 今天先记录以下InnoDB存储引擎相关的知识点 MySQL存储引擎 在MySQL存储引擎中,最为广知的存储引擎是InnoDB和MyISAM存储引擎 而这两个存储引 ... »

懵了!女朋友突然问我MVCC实现原理

前言 都知道事务的可重复读级别实现原理是使用MVCC实现的,那么你对MVCC的底层实现原理知道多少呢?面试高频点,你值得拥有。 一、MVCC到底是什么? MVCC即多版本控制器,其特点就是在同一时间,不同事务可以读取到不同版本的数据,从而去解决脏读和不可重复读的问题。 在这里插入图片描述 这样的解释 ... »

一文读懂MySql主从复制机制

作为一个关系型数据库,MySQL内建地提供数据复制机制,这使得在使用时,可以基于其复制机制实现高可用架构等高级特性,从而使得MySQL无需借助额外的插件或其他工具就具备适用于生产环境。这是MySQL得到大面积实际应用的条件之一。 基于MySQL的复制机制,不仅可以实现数据库的高可用,还能实现如:性能 ... »

数据库,逻辑删还是物理删?

相信很多人都听过删库跑路这个词,用搜索引擎检索删库跑路,可以看到很多程序员删库跑路的讨论和新闻。 但是,严格来讲,大部分程序员想删库跑路也做不到。为什么呢?因为没有数据库的删除权限。——真正能删库跑路的是运维,再准确点DBA。 那么平时业务中的删除是怎么做的呢?答案是逻辑删除。 逻辑删除:又名软删除 ... »

Mysql之锁机制

全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法FTWRL Flush tables with read lock 全局锁的典型使用场景是,做全库逻辑备份,也就是把整库每个表都 select 出来存成文本。在备份过程中整个库完全处于只读状态,存在以下问题: 如果你在主库 ... »

MySql sql优化实例

记录一次在工作中遇到sql优化实例: mysql优化一直是工作中一个非常普遍的问题,我们工作中会不可避免的遇到需要根据业务去写一些比较复杂的sql语句,或者更多的呢,是我们在新接手一个项目后,尤其是一些特别老的业务系统,经常会遇到一些查询非常慢的问题。这时候就需要我们去想办法来改善我们的查询方式,来 ... »

MySQL中explain语句的使用

一、概述 在 MySQL 中,我们可以使用慢查询日志或者 show processlist 命令等方式定位到执行耗时较长的 SQL 语句,在这之后我们可以通过 EXPLAIN或者 DESC 命令获取 MySQL 如何执行 SELECT 语句 的信息,包括在 SELECT 语句执行过程中表如何连接和连 ... »

Mysql之索引选择及优化

索引模型 哈希表 适用于只有等值查询的场景,Memory引擎默认索引 InnoDB支持自适应哈希索引,不可干预,由引擎自行决定是否创建 有序数组:在等值查询和范围查询场景中的性能都非常优秀,但插入和删除数据需要进行数据移动,成本太高。因此,只适用于静态存储引擎 二叉平衡树:每个节点的左儿子小于父节点 ... »

数据库事务锁详解

前言 上篇说到数据库事务中的特性ACID和4个隔离级别,今儿就来看一下事务中的锁。 MySQL中的锁 锁是MySQL在服务器层和存储引擎层的并发控制,锁可以保证数据并发访问的一致性、有效性; 锁冲突也是影响数据库并发访问性能的一个重要因素 MySQL有三种级别的锁:「表级锁、行级锁、页级锁」 表级锁 ... »

Python模拟简易版淘宝客服机器人

对于用Python制作一个简易版的淘宝客服机器人,大概思路是:首先从数据库中用sql语句获取相关数据信息并将其封装成函数,然后定义机器问答的主体函数,对于问题的识别可以利用正则表达式来进行分析,结合现实情况选择答案,最后在执行时可以设置循环语句,并且在每次回答间隔1s方便进一步做并发处理作为未来优化 ... »