
MySQL
文章平均质量分 50
一缕阳光a
(1)、从2018年8月开始从事分布式数据库内核开发工作,包括自研分布式分析型数据库OLAP、自研分布式数据库HTAP,根据开源数据库实现本公司集群型的OLTP产品,以及现在正在做的根据opengaussDB开发的HTAP类型数据库。
(2)、乐于专研,对分布式数据库有强烈的兴趣。
个人邮箱: [email protected]。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL中创建partition表的几种方式
其中,个人比较喜欢的方式是partition by hash(c) partitions xxx.数据库:MySQL 8.0.25。欢迎补充其他的方式。原创 2022-08-17 16:47:46 · 2448 阅读 · 0 评论 -
查询mysql单个分区的方法
今天工作中遇到了如何查询单个分区中数据的问题,记录下以便于后续再次遇到此问题就可以直接查询该文章了。数据库: musql 8.0.25。原创 2022-08-17 16:39:50 · 3707 阅读 · 0 评论 -
MySQL cast()函数以及json列
在工作中遇到了json列,不清楚如何写SQL,查询了下相关的文档之后总结下,根据json列的值进行区分,列值指的是 json_type(json列)的结果。2、列值为 time/date/datetime。3、列值为 signed/unsigned。5、列值为 double/float。6、列值为 timestamp。4、列值为 object。7、列值为array。...原创 2022-08-11 17:27:53 · 2158 阅读 · 0 评论 -
记一次使用pt-query-digest工具分析MySQL慢查询日志
最近遇到了MySQL性能问题,使用percona 的 pt-query-digest工具分析性能的瓶颈点。并且pt-query-digest工具要优于MySQL本身自带的mysqldumpslow工具。查看pt-query-digest工具在ubuntu下的安装流程请看:ubuntu下安装pt-query-digest_一缕阳光a的博客-CSDN博客https://blog.csdn.net/zgaoq/article/details/124710484?spm=1001.2014.3001.550原创 2022-05-11 16:13:00 · 509 阅读 · 0 评论 -
ubuntu下安装pt-query-digest
最近在开发MySQL时要使用pt-query-digest工具分析性能问题,也一路遇到了一些问题,记录下俩偏于日后翻看。系统: #45~20.04.1-Ubuntu SMP Mon Apr 4 09:38:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux在安装过程中遇到了很多的问题,官网给的直接安装失败,不再贴图,下面是安装成功的过程:Ubuntu下安装pt-query-digest的过程:(1)、安装percona-toolkitsudo a原创 2022-05-11 15:10:00 · 814 阅读 · 0 评论 -
mysql ld preload过程
纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。导读本文将叙述通过二进制源码方式安装Percona-5.7.15,并进行快速启动。这边如何使用二进制版本安装Percona-5.7.15就不说了,和之前一模一样。不做多余的事1、解压2、创建用户3、创建相关目录并且赋予MySQL权限4、使用mysqld初始化麻烦的地方按道理来说安装和启用MySQL应该是一件很容易的事,特别是使用二进制版本安装的特别容易的,只要解压初始化就行了。但是在Percon转载 2022-05-09 18:25:38 · 639 阅读 · 0 评论 -
MySQL字段值大小写敏感的解决方案
最近在用开源的MySQL 8.0开发本公司的产品,在客户现场建表时默认使用的是CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 字符集导致与oracle的结果不一致,最后将建表时的字符集改为utf8mb3就可以了。正常建表如下,默认使用的是CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 字符集[test]> CREATE TABLE t3(id int primary key, name varchar(50))eng原创 2022-04-27 16:38:16 · 2831 阅读 · 2 评论 -
MySQL中的insert ignore into讲解
最近工作中,使用到了insert ignore into语法,感觉这个语法还是挺有用的,就记录下来做个总结。insert ignore into : 忽略重复的记录直接插入数据。包括两种场景:1、插入的数据是主键冲突时insert ignore into会给出warnings,show warnings就可以看到提示主键冲突;[test]> create table tt(c1 int primary key, c2 varchar(50))engine = xx;Query原创 2022-04-26 17:41:05 · 48302 阅读 · 0 评论 -
幻读和不可重复读
MySQLMySQL默认的隔离级别为RR,因此只会出现幻读的情况。不会出现不可重复读的问题。幻读事务在插入已经检查过不存在的记录时,惊奇的发现这些数据已经存在了,之前的检测获取到的数据如同鬼影一般。例子:在事务1中,查询User表id为100的是用户否存在,如果不存在则插入一条id为100的数据。select*fromUserwhereid=100;在事务1查询结束后,事务2往User表中插入了一条id为100的数据。insertinto`Use...原创 2021-12-25 17:46:14 · 397 阅读 · 0 评论 -
MySQL幻读及解决方法
这是一篇数据库隔离级别的科普文章,旨在了解数据库中著名的幻读现象,为了专注,对脏读、不可重复读不作讨论。事务隔离级别MySQL有四级事务隔离级别:读未提交 READ-UNCOMMITTED: 存在脏读,不可重复读,幻读的问题读已提交 READ-COMMITTED:不存在脏读,但存在不可重复读,幻读问题可重复读 REPEATABLE-READ:不存在脏读,不可重复读问题,但存在幻读问题序列化SERIALIZABLE:解决脏读,不可重复读,幻读问题,但完全串行执行,性能最低什么是幻读幻转载 2021-12-25 17:14:32 · 3984 阅读 · 0 评论 -
MySQL5.7 常用系统表大全
MySQL5.7 默认的模式有:information_schema, 具有 61个表; m ysqL, 具有31个表; performance_schema,具有87个表; sys, 具有1个表, 100个视图. Information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。 在 MySQL中,把 ...转载 2021-12-05 15:46:21 · 1640 阅读 · 0 评论 -
MySQL源码解读之数据结构-LF_DYNARRAY
MySQL的代码中实现了一个Lock Free的Hash结构,称作LF_Hash。MySQL的不少模块使用了LF_Hash,比如Metadata Lock就依赖于它。但由于使用的方法不正确,导致了bug#98911和bug#98624。理解LF_Hash的实现细节,可以帮助我们用好LF_Hash。LF_HASH的基本特点动态扩展初始化时bucket的数量是1. 每个bucket平均拥有的元素(Element)是1个。因此当元素的总数量超过bucket的数量时,就会自动分裂。每次分裂增加一倍的buck转载 2021-11-30 11:57:28 · 341 阅读 · 0 评论 -
MySQL源码解读之数据结构-LF_DYNARRAY
MySQL源码解读之数据结构-LF_DYNARRAYLF_DYNARRAY数据结构是应用于LF_PINS和LF_HASH数据结构的一种特殊数据结构。该结构不同于DYNAMIC_ARRAY动态数组结构物理分配和逻辑操作,而是一种层级分配管理方式进行组织,对于稀疏、非连续的数组存储可以有效的提高空间利用率。LF_DYNARRAY,它是一个可以多级的、可动态扩充的数组。lf是lock_free的意思,即不使用锁的情况下实现多线程之间的变量同步。LF_DYNARRAY结构如下图所示:源码解读[源转载 2021-11-30 11:54:49 · 192 阅读 · 0 评论 -
MySQL单机版Recycle Bin回收站功能
由于DDL语句无法回滚,开发或运维人员如果误操作(例如DROP TABLE)可能会导致数据丢失。阿里云支持回收站(Recycle Bin)功能,临时将删除的表转移到回收站,还可以设置保留的时间,方便您找回数据,同时提供了工具包(DBMS_RECYCLE)便于您快捷使用。前提条件 MySQL单机版实例版本如下:RDS MySQL 8.0 RDS MySQL 5.7Recycle Bin参数Recycle Bin设计了如下五个参数。参数 说明 loose_recycle_bin原创 2021-11-25 19:10:56 · 1855 阅读 · 0 评论 -
MySQL一张innodb表列个数的限制和engine的选择
在MySQL innodb存储引擎中,一张表中列的个数最大为4096。其中在MySQL中,创建表时可以任意指定engine的类型,但是,考虑到join、union、union all等复杂的场景时,尽量每张表都用统一的engine。原创 2021-11-05 17:50:29 · 408 阅读 · 0 评论 -
MySQL中innodb_page_cleaners详解
innodb_page_cleaners是MySQL中的刷脏线程个数,它的值等于innodb_buffer_pool_instances的值,如果innodb_page_cleaners的值大于innodb_buffer_pool_instances的值,那么自动的将innodb_page_cleaners调整为与innodb_buffer_pool_instances的值相同,其他情况不做调整。默认值都是1,如下图:[test]> select @@innodb_page_cleaners原创 2021-09-18 20:20:55 · 3010 阅读 · 0 评论 -
MySQL中update一条record的过程
在MySQL中,update是原地更新数据,原地更新数据,原地更新数据。重要的事情说3遍。这是不同于PGSQL的。update的具体过程是:(1)、先对该条record对应的索引加X锁(2)、将修改后的数据写入到redo.log中(3)、将修改之前的数据备份到undo.log中(4)、备份完毕,原地更新数据,修改txid,将roll_ptr指向undo.log中该条记录的备份,最后提交事务tx(5)、提交事务tx过程中,服务器突然宕机,再次重启时,重放redo.log中的日志进行数据原创 2021-09-18 19:52:24 · 659 阅读 · 0 评论 -
mysql 8.0 一条insert语句的具体执行流程分析(二)
继续上一篇文章:mysql 8.0 一条insert语句的具体执行流程分析(一)_一缕阳光的博客-CSDN博客由于最近换工作一直在试用期内,在拼命的学习、总结中,因此没有时间写文章,今天转正了腾出来时间继续写下一篇文章。mysql 8.0 一条insert语句的具体执行流程分析写完了write_record部分,下面将会运行到engine层,主要存储引擎的接口代码版本:mysql 8.0.22编程语言:c++ && c++11 && c++14 &&原创 2021-09-18 19:13:17 · 1318 阅读 · 0 评论 -
MySQL中的alter table操作之add/modify/drop列
alter table的操作有增加列、删除列和修改列的长度等create table t1 (c1 int primary key) engine = innodb;// 增加一个列c2alter table t1 add c2 varchar(16379);drop table t1;create table t1 (c1 int primary key, c2 varchar(50)) engine = innodb;// 将列c2长度更改alter table t1 modif原创 2021-07-19 19:15:56 · 11721 阅读 · 0 评论 -
MySQL innodb每行数据长度的限制
今天在create table时,报出这样的一个错误:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs查阅MySQL的官方资料才发现,每条记录有最大长度的。MySQL的官方文档:链接:https://dev.mysql.com/doc/refman/8.0/en/原创 2021-07-14 19:48:00 · 1783 阅读 · 1 评论 -
mysql中的if [not] exists
最近在MySQL数据库的基础上开发分布式的数据库,需要支持一个if [not] exists语法。学习了SQL语法解析部分,总结下:1、在MySQL中,创建表时支持create table if not exists db.table_name ....create table if not exists test1( c1 int primary key, c2 varchar(50))engine = innodb;如果要创建的表存在,则直接返回,不在重新创建该表。原创 2021-07-12 19:00:50 · 12685 阅读 · 0 评论 -
MySQL中alter table range partition
最近在用MySQL开发新功能时,使用到了alter table range partition的功能,在此总结下mysql innodb支持的alter table range partition相关功能。mysql的版本是8.0.22, os: linux ubuntu对alter range partition的操作主要由以下几个:analyze partitionadd partitiondrop partitiontruncate partitionremove partition原创 2021-06-17 17:41:11 · 2413 阅读 · 0 评论 -
MySQL中rename一个view对应的SQL语句
在MySQL中,如果想要rename 视图的名字,需要使用rename table 语句。SQL语句例如:create table test (c1 int primary key, c2 varchar(50)) engine = xxxxx;create view test3 as select * from test;rename table test3 to new_view;...原创 2021-06-02 14:45:16 · 1314 阅读 · 0 评论 -
mysql 8.0 一条insert语句的具体执行流程分析(一)
最近在mysql 8.0的代码上开发新的功能的时候,梳理了insert语句的执行过程,由于insert语句比较复杂并且涉及的内容很多,在下面准备分3章节来分析,这是第一个章节,主要讲述sql解析和命令的分发部分。代码版本:mysql 8.0编程语言:c++ && c++11 && c++14 && c++17SQL语句是:create table test(c1 int primary key, c2 varchar(50))engine.原创 2021-05-20 15:59:32 · 2697 阅读 · 1 评论 -
cast()函数
cast()函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用as关键字分隔的源值和目标数据类型。语法:CAST (expression AS data_type)expression:任何有效的SQL Server表达式。AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。cast()可.原创 2021-04-14 18:06:08 · 17925 阅读 · 0 评论 -
mysql - 内存表使用总结
部分转载:https://blog.csdn.net/hemeinvyiqiluoben/article/details/51222951?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t原创 2021-03-30 18:18:03 · 280 阅读 · 0 评论 -
MySQL NDB Cluster
1. MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。2. MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。3. MySQL集群是一个无共享的(share-nothing)、分布式节点架构的转载 2021-03-30 16:57:07 · 247 阅读 · 0 评论 -
分布式事务2PC、3PC模型
工作中使用最多的是本地事务,但是在对单一项目拆分为 SOA、微服务之后,就会牵扯出分布式事务场景文章以分布式事务为主线展开说明,并且针对 2PC、3PC 算法进行详细的讲解,最后通过一个 Demo 来更深入掌握分布式事务,文章目录结构如下 什么是事务 什么是分布式事务 DTP 模型和 XA 规范 什么是 DTP 模型 什么是 XA 规范 2PC 一致性算法 2PC-准备阶段 2PC-提交阶段转载 2021-03-26 18:36:49 · 378 阅读 · 0 评论 -
MySQL 引擎特性 · InnoDB Buffer Pool
前言用户对数据库的最基本要求就是能高效的读取和存储数据,但是读写数据都涉及到与低速的设备交互,为了弥补两者之间的速度差异,所有数据库都有缓存池,用来管理相应的数据页,提高数据库的效率,当然也因为引入了这一中间层,数据库对内存的管理变得相对比较复杂。本文主要分析MySQL Buffer Pool的相关技术以及实现原理,源码基于阿里云RDS MySQL 5.6分支,其中部分特性已经开源到AliSQL。Buffer Pool相关的源代码在buf目录下,主要包括LRU List,Flu List,Double转载 2020-08-18 10:19:32 · 420 阅读 · 0 评论 -
MySQL buffer pool里的三种链表和三种page
mysql buffer pool里的三种链表和三种pagebuffer pool是通过三种list来管理的1) free list2) lru list3) flush listbuffer pool中的最小单位是page,在innodb中定义三种page1) free page :此page未被使用,此种类型page位于free链表中2) clean page:此page被使用,对应数据文件中的一个页面,但是页面没有被修改,此种类型page位于lru链表中3) dirty p.转载 2020-08-17 14:42:04 · 813 阅读 · 0 评论 -
数据库中间件详解
本文是转载的文章:https://mp.weixin.qq.com/s?__biz=MzA5MDA5Njk0NQ==&mid=2456618601&idx=1&sn=c10839f1797e7be1ea41f005b57432df&chksm=87897237b0fefb215dd74c28cf5b524984b8f50d2ef13293e37919774f1c51e36642e489ee38&scene=21#wechat_redirect1数据库拆分过程及挑.转载 2020-08-13 20:02:42 · 1647 阅读 · 0 评论 -
Mysql binlog应用场景与原理深度剖析
本文深入介绍Mysql Binlog的应用场景,以及如何与MQ、elasticsearch、redis等组件的保持数据最终一致。最后通过案例深入分析binlog中几乎所有event是如何产生的,作用是什么。1 基于binlog的主从复制Mysql 5.0以后,支持通过binary log(二进制日志)以支持主从复制。复制允许将来自一个MySQL数据库服务器(master) 的数据复制到一个或多个其他MySQL数据库服务器(slave),以实现灾难恢复、水平扩展、统计分析、远程数据分发等功能。二进转载 2020-08-13 17:22:07 · 488 阅读 · 0 评论 -
MySQL InnoDB的缓冲池之预读失效和缓存池污染
InnoDB的缓存池作用:缓存表数据和索引数据,把磁盘上的数据加载到缓冲池中,避免每次都进行磁盘IO,起到加速访问的效果.LRU算法(Least recently used):把入缓存池的页放在LRU的头部,作为最近访问的元素 页在缓冲池中的数据,把它放在队列的前面(情景一) 页不在缓冲池中的数据,把它放在队列的前面,同时淘汰队列后面的数据(情景二) 情景一情景二MySQL不用LRU算法原因:预读失效 提前把页放入了缓冲池,但最终MySQL并没有从页中读取数据,称为转载 2020-08-13 10:18:22 · 1232 阅读 · 0 评论 -
mysql innodb缓存策略之Buffer Pool
The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb bufferpool怎么工作,和利用它读取频繁访问的数据,是mysql优化重要的方面。 理想状况下,把bufferpool的大小调整到足够大,留下足够的内存空间给其他该服务器上的进程(使其无缺页即可)。bufferpool越大,innodb 月表现为内存型数据库,从硬盘上一次读取数据,之后并成了从内存中读取数据。buffer pool甚至缓存那...原创 2020-08-12 11:11:54 · 444 阅读 · 0 评论