274 天前 / kafeidou
一 引言 MYSQL Performance schema(PFS)是 mysql 提供的强大的性能监控诊断工具,提供了一种能够在运行时检查 server 内部执行情况的特方法。PFS 通过监视 server 内部已注册的事件来收集信息,一个事件理论上可以是 server 内部任何一个执行行为或资源占用,比如一个函数调用、一个系统调用 wait、SQL 查询中的解析或排序状态,或者是内存资源占用等。 PFS 将采集到的性能数据存储在 performance_schema 存储引擎中,performance_schema 存储引擎是一个内存表引擎,也就是所有收集的诊断信息都会保存在内存中。
275 天前 / 微观技术
大家好,我是 Tom 哥~ 为了便于大家查找问题,了解全貌,整理个目录,我们可以快速全局了解关于 mysql 数据库,面试官一般喜欢问哪些问题 接下来,我们逐条来看看每个问题及答案 MyISAM 和 InnoDB 的区别? 答案:InnoDB 支持 事务、外键、聚集索引,通过 MVCC 来支持高并发,索引和数据存储在一起。InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而 MyISAM 用一个变量保存了整个表的行数。 InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁,并发能力低。
281 天前 / Dr_Hydra
事情是这样的,前几天隔壁部门的哥们在生产环境的数据库上,执行了一下 drop 命令,好嘛,活生生的删库跑路的例子居然真的在我身边发生了,好在运维同学给力,后来恢复了数据。事后听说这哥们虽然没被开除,但也吃了个公司的警告。 再然后,运维那边回收了所有环境下数据库的 drop 命令的权限,甚至包括了开发环境,本来觉得对我们也没啥影响,一般我们也没有啥需要删表的需求。但是隔了没几天,我在重命名一个表的时候,突然弹出了这样一个报错: 仔细看了一眼报错: 1142-DROPcommanddeniedtouser'hydra'@'localhost'fortable't_orders' 什么情况...
286 天前 / 狂笨的小海马
数据库是我们在项目开发过程中必不可少的一项服务。相信技术大大也都接触过各种类型的数据库,例如 Oracle、MySQL、MongoDB、Redis 等大众熟知的数据库。 数据库的选型,在我架构过程中也是重中之重。什么场景适合合适什么数据库,每种数据库的特点是什么,在架构中起到什么样的作用,承担的重点业务是什么? 我们在 DB-ENGINES (https://db-engines.com/en/ranking)看到,参与排名的数据库就多达 354 种。如下图,这里 2021 年 7 月的一个数据库排名供参考。
288 天前 / 三分恶
大家好,我是老三,今天分享一个小知识点——索引下推。 如果你在面试中遇到,听到“MySQL5.6”、“索引优化” 之类的词语,你就要立马 get 到,这个问的是“索引下推”。 什么是索引下推索引下推 (Index Condition Pushdown,简称 ICP),是 MySQL5.6 版本的新特性,它能减少回表查询次数,提高查询效率。 索引下推优化的原理我们先简单了解一下 MySQL 大概的架构: MySQL 大概架构 MySQL 服务层负责 SQL 语法解析、生成执行计划等,并调用存储引擎层去执行数据的存储和检索。
288 天前 / u561252
一 背景和架构 我们都知道,利用编写程序来动态实现我们应用所需要的逻辑,从而程序执行时得到我们需要的结果。那么数据库就是一种通过输入 SQL 字符串来快速获取数据的应用。当然,假设没有数据库这种系统应用,用程序如何实现呢?我们可能会发现,即使不管数据如何存储、数据是否并发访问,仍然需要不断通过修改程序处理不同应用对数据的不同请求。比如大数据领域,我们通常通过非关系型数据库的 API,实现对数据的获取。
290 天前 / yes的练级攻略
我,小 Y。 又来面试了,还是之前那家公司,即将和之前那个老面试官进行第二次 battle,心情还是 xue 微有点忐忑。 没看过第一次 battle 的同学可以看这里,一个 MVCC 和面试官大战三十回合 又一抹光亮闪过,面试官推门而入,我抬头望去,没错,还是那味儿。 看到面试官头上那“傲然矗立”的头发,差点又想站起来给他敬了个礼,算了先稳住,低调一点。 面试官瞥了我一眼:来吧,咱们继续面试,上次没办法,女朋友就是粘人,这次问 MySQL InnoDB 的锁喔。 我:.....( 行,我知道你有女朋友了),好的面试官,您请。
292 天前 / 程序猿阿星
本文读完需 7 分钟,速读仅需 4 分钟。 前言 MySQL 中执行一条 SQL 语句,相应表数据的读写都是由存储引擎去做(更新数据、查询数据)。 在这个过程,存储引擎需要决策一些事情 数据是从内存查还是从硬盘查数据是更新在内存,还是硬盘内存的数据什么时候同步到硬盘所以存储引擎会按照内部逻辑与内存、硬盘交互。 我们可以按需选择存储引擎,比如常见的 InnoDB、MyISAM、Memory 等等。 众多存储引擎中,InnoDB 是最为常用的,从 MySQL5.5.8 版本开始,InnoDB 是默认的存储引擎。
293 天前 / bytearch
一、背景发布上篇文章浅谈订单重构之路之后,有很多小伙伴想知道,分库分表具体是如何实现的。那么这篇文章具体介绍下,分库分表实战。 二、目标本文将完成如下目标:* 分表数量: 256 分库数量: 4 * 以用户 ID(user_id) 为数据库分片 Key * 最后测试订单创建,更新,删除, 单订单号查询,根据 user_id 查询列表操作。 架构图: 表结构如下: CREATETABLE`order_XXX`( `order_id`bigint(20)unsignedNOTNULL, `user_id`int(11)DEFAULT'0'COMMENT'订单 id', `status`int(11)DEFAULT'0'COMMENT'订单状态', `booking_date`datetimeDEFAULTNULL, `create_tim...
299 天前 / Dr_Hydra
在介绍 mysql 的多版本并发控制 MVCC 的过程中,我们提到过 mysql 中存在一些隐藏列,例如行标识、事务 ID、回滚指针等,不知道大家是否和我一样好奇过,要怎样才能实际地看到这些隐藏列的值呢? 本文我们就来重点讨论一下诸多隐藏列中的行标识 DB_ROW_ID,实际上,将行标识称为隐藏列并不准确,因为它并不是一个真实存在的列,DB_ROW_ID 实际上是一个非空唯一列的别名。在拨开它的神秘面纱之前,我们看一下官方文档的说明: If a table has a PRIMARY KEY or UNIQUE NOT NULL index that consists of a single column that has an integer type, you can ...
300 天前 / vivo互联网技术
作者:vivo 互联网数据库团队 -Liu Shilin 一、初识 MGR 相信很多人对 MGR 这个词比较陌生,其实 MGR( 全称 MySQL Group Replication 【MySQL 组复制】)是 Oracle MySQL 于 2016 年 12 月发布 MySQL 5.7.17 推出的一个全新高可用和高扩展的解决方案。具备以下特性: 高一致性,基于原生复制及 Paxos 协议的组复制技术,并以插件的方式提供,提供一致数据安全保证; 高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制; 高扩展性...
302 天前 / Java4ye
嘀嘀嘀~ 理想每天都更文,现实几天一篇文,横批:文呢? 哈哈哈 无奈呀 这是第二次为小伙伴写文章啦! 上一次是恋爱的味道,这次却是学习的芳香 哈哈 这次应小伙伴的要求,来总结下这个 MySQL 主要版本的新特性 那么,我们一起往下看看叭~ 我们直接来到官网查看 MySQL 官方文档 可以看到这里有三个版本 5.6 , 5.7 , 8.0 额 既然 5.5 找不到了,那我们就记住他的主要特点: innodb 就是从 5.5 这个版本开始成为 默认的存储引擎 引入了真 UTF8 ——> utf8mb4 为什么只有两点呢?因为 4ye 的脑瓜子就只有这两点 哈哈哈 下面开始 5.6 的探索~ 5.6 MySQL 5....
306 天前 / 志军
背景在一次会议中,开发同学表达了希望能拿到执行修改 SIT 环境 MySQL schema 的修改权限。也就是不经过任何 review,都可以随意的在 SIT 环境执行任何的 SQL。 根本问题首先要说明下,SIT 环境是集成测试环境。n 大于 10。这个环境目前只允许通过自动化部署实现部署。UAT 环境和 PROD 环境都采用同样的方式部署。 接下来,我想说明我为什么反对开发人员随意在此环境上进行 Schema 的修改。我举一些常见的例子: SIT 环境的的 users 表中的 name 字段长度是 50,而 SIT 环境的是 100。