<导航

文章分类 -  sql

摘要:1.问题引入 假设一个场景,一张用户表,包含3个字段。id,identity_id,name。现在身份证号identity_id和姓名name有很多重复的数据,需要删除只保留一条有效数据。 2.模拟环境 1.登入mysql数据库,创建一个单独的测试数据库mysql_exercise create d 阅读全文
posted @ 2021-05-08 11:39 字节悦动 阅读(4586) 评论(0) 推荐(0) 编辑
摘要:一、MySQL 日期和时间戳的转换 1.日期转时间戳 -- 转十位 select UNIX_TIMESTAMP('2018-12-25 12:25:00'); 结果:1545711900 -- 转十三位 SELECT REPLACE(unix_timestamp(current_timestamp( 阅读全文
posted @ 2021-05-08 10:17 字节悦动 阅读(1056) 评论(0) 推荐(1) 编辑
摘要:一、前言 上周遇到一个因insert而引发的死锁问题,其成因比较令人费解。于是想要了解一下insert加锁机制,但是发现网上介绍的文章比较少且零散,挖掘过程比较忙乱。 本以为只需要系统学习一个较完全的逻辑,但是实际牵扯很多innodb锁相关知识及加锁方式。我好像并没有那么大的能耐,把各种场景的加锁过 阅读全文
posted @ 2021-04-30 17:34 字节悦动 阅读(8995) 评论(0) 推荐(18) 编辑
摘要:微信公众号中(这里)看到一个关于MySQL的innodb_deadlock_detect与并发相关的细节,觉得比较有意思,也即innodb_deadlock_detect这个参数的设置问题 开始之前,关于锁、死锁,我们要先统一下几点认知: 死锁是由于多个事务相互持有对方所需要的锁,结果导致事务都无法 阅读全文
posted @ 2021-04-30 16:18 字节悦动 阅读(3738) 评论(0) 推荐(7) 编辑
摘要:1、查询是否锁表 show OPEN TABLES where In_use > 0; 查询到相对应的进程 然后 kill id 2、查询进程 show processlist 补充: 查看正在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 查 阅读全文
posted @ 2021-04-30 11:44 字节悦动 阅读(27572) 评论(0) 推荐(26) 编辑
摘要:概述: Update和Insert是锁表还是锁行,会影响到程序中并发程序的设计。 总结: (1)Update时,where中的过滤条件列,如果用索引,锁行,无法用索引,锁表。按照索引规则,如果能使用索引,锁行,不能使用索引,锁表。 (2)Insert时,可以并发执行,之间并不会相互影响。 一、Upd 阅读全文
posted @ 2021-04-29 17:34 字节悦动 阅读(9609) 评论(2) 推荐(28) 编辑
摘要:最近在数据库优化的时候,看到一些表在设计上使用了text或者blob的字段,单表的存储空间已经达到了近100G,这种情况再去改变和优化就非常难了 一、简介 为了清楚大字段对性能的影响,我们必须要知道innodb存储引擎的处理方式: 1、一些知识点 1.1 在InnoDB 1.0.x版本之前,Inno 阅读全文
posted @ 2021-04-29 11:58 字节悦动 阅读(2374) 评论(0) 推荐(2) 编辑
摘要:一.InnoDB逻辑存储结构 首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成。 段 段就是上图的segment区域,常见的段有数据段、索引段、回滚段等,在InnoDB存储引擎中,对段的管理都是由引擎自身所完成的。 区 区就是上图的ex 阅读全文
posted @ 2021-04-28 20:35 字节悦动 阅读(682) 评论(0) 推荐(2) 编辑
摘要:今天我要跟你分享的话题是:“大家常说的表空间到底是什么?究竟什么又是数据表?” 这其实是一个概念性的知识点,当作拓展知识。涉及到的概念大家了解一下就好,涉及的参数,留个印象就好。 从 InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间( tablespace)。表 阅读全文
posted @ 2021-04-28 11:57 字节悦动 阅读(9592) 评论(2) 推荐(25) 编辑
摘要:1. 为什么要合并数据页 2. 什么时候合并数据页 2.1 准备测试环境 2.2 找到两个相邻页 2.3 试探性逐步删除数据,接近阈值 2.4 再次只删除一条记录,验证是否合并 3. 其他补充说明 3.1 除了表级可以设置外,单个索引也可以设置合并阈值 3.2 页合并状态监控3.3 如何适当调整阈值 阅读全文
posted @ 2021-04-26 15:22 字节悦动 阅读(144) 评论(0) 推荐(0) 编辑
摘要:作者:Marco Tusa 、 Sri Sakthivel 译者:孟维克,知数堂优秀校友 原文链接: https://www.percona.com/blog/2017/04/10/innodb-page-merging-and-page-splitting/ https://www.percona 阅读全文
posted @ 2021-04-26 14:36 字节悦动 阅读(1089) 评论(0) 推荐(8) 编辑
摘要:阅读目录 0. 初始化测试表、数据 1. 问题1:索引列允许为NULL,对性能影响有多少 结论1,存储大量的NULL值,除了计算更复杂之外,数据扫描的代价也会更高一些 2. 问题2:辅助索引需要MVCC多版本读的时候,为什么需要依赖聚集索引 结论2,辅助索引中不存储DB_TRX_ID,需要依托聚集索 阅读全文
posted @ 2021-04-26 13:48 字节悦动 阅读(244) 评论(0) 推荐(1) 编辑
摘要:本文概要 Generated Column是什么 Virtual Column与Stored Column的区别 如果我对Generated Column做一些破坏行为会怎么样 Generated Column上创建索引 Generated Column上创建索引与Oracle的函数索引的区别 Ge 阅读全文
posted @ 2021-04-21 10:20 字节悦动 阅读(473) 评论(0) 推荐(2) 编辑
摘要:简介 在MySQL5.7.8之后开始支持一种可高效获取JSON文本中数据的原生JSON类型,该类型具有以下优点: JSON数据有效性检查:BLOB等类型无法在数据库层做这样的约束性检查, 保证了JSON数据类型的强校验,JSON数据列会自动校验存入此列的内容是否符合JSON格式,非正常格式则报错,而 阅读全文
posted @ 2021-04-20 09:57 字节悦动 阅读(1796) 评论(0) 推荐(2) 编辑
摘要:MYSQL中TRUNCATE和DELETE的区别 MYSQL中TRUNCATE和DELETE都能够清理表中的数据,但是他们有什么区别呢?我们从下面的几点来分析: 1. 条件删除 这个比较好理解,因为DELETE是可以带WHERE的,所以支持条件删除;而TRUNCATE只能删除整个表。 # delet 阅读全文
posted @ 2021-04-14 13:55 字节悦动 阅读(1560) 评论(0) 推荐(2) 编辑
摘要:时区 指地球上的一块区域使用的同一时间定义,以经度划分,每个时区横跨15经度,总共24个时区,东西各12个时区。 时间戳 指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,注意“现在”这个词,如果是格林威治时间 ,现在指的是格 阅读全文
posted @ 2020-01-17 16:45 字节悦动 阅读(1528) 评论(0) 推荐(0) 编辑
摘要:我们在设计表的时候,经常会有老司机这么告诉我们。 字段尽可能用NOT NULL,而不是NULL,除非特殊情况。 这句话到底有没有错? 可以负责任的告诉你这句话没有错,也不是以讹传讹,这句话首次出现在 MySQL 官网。 如果你读过《高性能 MySQL》这本书,你应该会看到这么一段,在 4.1 节提到 阅读全文
posted @ 2020-01-09 11:02 字节悦动 阅读(1089) 评论(0) 推荐(2) 编辑
摘要:在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,一般思路是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql中有ON DUPLICATE KEY UPDATE一步就可以完成(Mysql独有的语法)。 ON DUPLICATE 阅读全文
posted @ 2019-10-25 13:40 字节悦动 阅读(162801) 评论(1) 推荐(323) 编辑
摘要:1、LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。 好吧,可能90%以上的 DBA 解决该问题就到此 阅读全文
posted @ 2019-06-27 13:52 字节悦动 阅读(588) 评论(0) 推荐(2) 编辑
摘要:一、简介 MySQL提供了一个EXPLAIN命令,它可以对SELECT语句进行分析,并输出SELECT执行的详细信息,以供开发人员针对性优化。EXPLAIN命令用法十分简单,在SELECT语句前加上Explain就可以了,例如: EXPLAIN SELECT * from user_info WHE 阅读全文
posted @ 2019-06-18 13:10 字节悦动 阅读(161) 评论(0) 推荐(0) 编辑