<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[蓬莱道人的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/MOU_IT</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; MOU_IT]]></copyright><item><title><![CDATA[BenchmarkSQL使用教程]]></title><link>https://blog.csdn.net/MOU_IT/article/details/144630251</link><guid>https://blog.csdn.net/MOU_IT/article/details/144630251</guid><author>MOU_IT</author><pubDate>Sat, 21 Dec 2024 16:46:43 +0800</pubDate><description><![CDATA[Transaction Processing Performance Council (TPC) 事务处理性能委员会，是一家非盈利IT组织，他们的目的是定义数据库基准并且向产业界推广可验证的数据库性能测试。而TPC-C最后一个C代表的是压测模型的版本，在这之前还有TPC-A、TPC-B。A / B 两个版本模拟的是银行转账业务，相对业务模型比较简单。TPC-C自92年初发布，在过去20多年，不管是在业界还是学术界都是应用最为广泛的OLTP压测工具。]]></description><category></category></item><item><title><![CDATA[PG的常用命令]]></title><link>https://blog.csdn.net/MOU_IT/article/details/131620938</link><guid>https://blog.csdn.net/MOU_IT/article/details/131620938</guid><author>MOU_IT</author><pubDate>Sun, 09 Jul 2023 11:39:18 +0800</pubDate><description><![CDATA[9. 创建表：create table tbname ([字段名1] [类型1], [字段名2] [类型2], .... primary key (字段名m, 字段名n,...);11. 重命名一个字段：alter table [表名] rename column [字段名A] to [字段名B];10. 在已有的表中添加字段：alter table [表名] add column [字段名][类型];12. 删除表中的字段：alter table [表名] drop column [字段名];]]></description><category></category></item><item><title><![CDATA[对一个整数进行因式分解，求出所有质因数]]></title><link>https://blog.csdn.net/MOU_IT/article/details/129346904</link><guid>https://blog.csdn.net/MOU_IT/article/details/129346904</guid><author>MOU_IT</author><pubDate>Sun, 05 Mar 2023 15:50:42 +0800</pubDate><description><![CDATA[给定一个正整数N，对N进行质因数分解，求解N的所有质因数。]]></description><category></category></item><item><title><![CDATA[分布式数据库难题（四）：单机事务]]></title><link>https://blog.csdn.net/MOU_IT/article/details/126187240</link><guid>https://blog.csdn.net/MOU_IT/article/details/126187240</guid><author>MOU_IT</author><pubDate>Sun, 18 Sep 2022 15:58:10 +0800</pubDate><description><![CDATA[首先，设想这样一个例子：你正在开发一个应用程序来帮助医生管理医院的轮班。通常，医院会安排多个医生值班，医生也可以申请调整班次，但是前提是确保至少一位医生还在该班次中值班。现在的情况是，Alic和Bob是两位值班医生，两人碰巧都身体不适，因而都决定请假，不幸的是，他们几乎同一时刻点击了调班按钮，如下图所示：每笔事务总是首先检查是否至少有两名医生目前在值班。如果是的话，则有一名医生可以安全离开。由于数据库正在使用快照隔离级别，两个检查都返回有两名医生，所以两个事务都安全地进入到下一阶段。]]></description><category></category></item><item><title><![CDATA[分布式数据库难题（三）：数据一致性]]></title><link>https://blog.csdn.net/MOU_IT/article/details/126111876</link><guid>https://blog.csdn.net/MOU_IT/article/details/126111876</guid><author>MOU_IT</author><pubDate>Fri, 05 Aug 2022 23:01:23 +0800</pubDate><description><![CDATA[一直以来，在“分布式系统”和“数据库”这两个学科中，一致性（Consistency）都是重要概念，但它表达的内容却并不相同。对于分布式系统而言，一致性是在探讨当系统内的一份逻辑数据存在多个物理的数据副本时，对其执行读写操作会产生什么样的结果，这也符合 CAP 理论对一致性的表述。而在数据库领域，“一致性”与事务密切相关，又进一步细化到 ACID 四个方面。其中，I 所代表的隔离性（Isolation），是“一致性”的核心内容，研究的就是如何协调事务之间的冲突。.........]]></description><category></category></item><item><title><![CDATA[分布式数据库难题（二）：数据复制]]></title><link>https://blog.csdn.net/MOU_IT/article/details/126078506</link><guid>https://blog.csdn.net/MOU_IT/article/details/126078506</guid><author>MOU_IT</author><pubDate>Mon, 01 Aug 2022 22:48:51 +0800</pubDate><description><![CDATA[复制主要指通过互联网在多台机器上保存相同的数据副本，通过复制的方案，主要希望达成一下目的（1）使数据在地理位置上更接近用户，从而降低访问延迟；（2）当部分组件出现故障，系统依然可以继续工作，从而提高可用性；（3）扩展至多台机器以同时提供数据访问服务，从而提高读吞吐率；...]]></description><category></category></item><item><title><![CDATA[分布式数据库难题（一）：数据分区]]></title><link>https://blog.csdn.net/MOU_IT/article/details/126065019</link><guid>https://blog.csdn.net/MOU_IT/article/details/126065019</guid><author>MOU_IT</author><pubDate>Sat, 30 Jul 2022 21:36:32 +0800</pubDate><description><![CDATA[面对海量数据或者非常高的查询压力，我们需要将数据拆分成分区，采用分区的目的主要是提高可扩展性，将数据和查询负载均匀分布在所有节点上。如果节点平均分担负载，那么理论上10个节点应该能够处理10倍的数据量和10倍于单个节点的读写吞吐量。而如果分布不均匀，则会出现某些分区节点比其它分区承担更多的数据量或查询负载，称之为写倾斜。......]]></description><category></category></item><item><title><![CDATA[抓包工具的使用]]></title><link>https://blog.csdn.net/MOU_IT/article/details/123031986</link><guid>https://blog.csdn.net/MOU_IT/article/details/123031986</guid><author>MOU_IT</author><pubDate>Sun, 20 Feb 2022 18:05:41 +0800</pubDate><description><![CDATA[tcpdump是Linux下一个强大的抓包工具，支持针对网络层、协议、主机、网络或端口的过滤，凭借其强大的功能和灵活的截取策略，使其成为类UNIX系统下用于网络分析和问题排查的首选工具。

1. 使用教程

执行tcpdump --help命令后，tcpdump的使用语法如下：


tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
        [ -C file_size ] [ -E algo:secret ] [ ....]]></description><category></category></item><item><title><![CDATA[正则表达式]]></title><link>https://blog.csdn.net/MOU_IT/article/details/123030671</link><guid>https://blog.csdn.net/MOU_IT/article/details/123030671</guid><author>MOU_IT</author><pubDate>Sun, 20 Feb 2022 15:51:20 +0800</pubDate><description><![CDATA[1. 什么是正则表达式

2. 基本语法

 2.1 字符类

 2.2 数量限定符

 2.3 位置限定符

 2.4 其它特殊字符

3. 实战演练

  在工作中，为了提高工作效率，我们必须要学会使用Linux下的各种工具，它们强大而高效。正则表达式则是这些高效的工具之一，无论是文本处理命令grep、sed、awk中使用正则表达式，还是在代码编译器VS Code中使用正则表达式，都可以快速地帮助我们进行文本的查找或者替换，提高编写代码或者解决问题的工作效率，减少时间的浪...]]></description><category></category></item><item><title><![CDATA[无日志定位代码段]]></title><link>https://blog.csdn.net/MOU_IT/article/details/121893161</link><guid>https://blog.csdn.net/MOU_IT/article/details/121893161</guid><author>MOU_IT</author><pubDate>Mon, 03 Jan 2022 10:52:03 +0800</pubDate><description><![CDATA[在生产环境中，一般情况下不会打开core文件开关，所以如果进程运行过程中core掉了，就无法找到程序的调用栈，而且此时日志文件中也没有记录core掉的原因，那么此时如何找出程序是core在哪行代码呢 ？笔者在工作中就遇到过这样一个问题。

1. 现场分析

// todo

2. 定位代码段

// todo
...]]></description><category></category></item><item><title><![CDATA[Redis（二十二）：Redis迁移工具]]></title><link>https://blog.csdn.net/MOU_IT/article/details/121523038</link><guid>https://blog.csdn.net/MOU_IT/article/details/121523038</guid><author>MOU_IT</author><pubDate>Wed, 24 Nov 2021 20:02:40 +0800</pubDate><description><![CDATA[1. Redis-shake





2. Redis-migrate-tool





3. Redis-full-check





1. Redis-shake

1.1 简介

 redis-shake是阿里云Redis&amp;MongoDB团队开源的用于redis数据同步的工具。redis-shake是我们基于redis-port基础上进行改进的一款产品。它支持解析、恢复、备份、同步四个功能。

恢复restore：将RDB文件恢复到目的redis数据库。
	备份dump：将源red...]]></description><category></category></item><item><title><![CDATA[Redis（二十一）：Redis性能测试]]></title><link>https://blog.csdn.net/MOU_IT/article/details/121522395</link><guid>https://blog.csdn.net/MOU_IT/article/details/121522395</guid><author>MOU_IT</author><pubDate>Wed, 24 Nov 2021 19:18:21 +0800</pubDate><description><![CDATA[1. redis-benchmark的使用

2. python脚本对redis进行测试

  通常我们开发完一个系统之后，如何验证这个系统的好坏呢，这就需要做性能测试，Redis也不例外。幸运的是，Redis源码中已经提供了测试工具redis-benchmark，当我们从源码中编译完成Redis之后，就可以使用redis-benchmark对Redis进行性能测试。

1. redis-benchmark的使用

  redis-benchmard的使用语法如下：


redis-benchmar...]]></description><category></category></item><item><title><![CDATA[InnoDB（三）：InnoDB表的逻辑和物理存储]]></title><link>https://blog.csdn.net/MOU_IT/article/details/120936508</link><guid>https://blog.csdn.net/MOU_IT/article/details/120936508</guid><author>MOU_IT</author><pubDate>Sun, 24 Oct 2021 17:56:36 +0800</pubDate><description><![CDATA[1. InnoDB逻辑存储结构

  所有的数据都被放在一个空间中，这个空间称为表空间（table space），表空间又由段（segmet）、区（extent）和页（page）组成，如下图所示。



（1）表空间（table space）

  表空间是存储引擎的最高层，所有的数据都存放在表空间中。如果没有开启innodb_file_per_table，则所有数据都存放在默认的共享表空间中，如果开启这个参数，那么，每张表的数据可以单独放到一个表空间中。表空间就是存放表的地方，它可以是一个物理文件...]]></description><category></category></item><item><title><![CDATA[Redis（二十）：Redis中执行Lua脚本]]></title><link>https://blog.csdn.net/MOU_IT/article/details/119513626</link><guid>https://blog.csdn.net/MOU_IT/article/details/119513626</guid><author>MOU_IT</author><pubDate>Sun, 08 Aug 2021 16:49:34 +0800</pubDate><description><![CDATA[1. Lua脚本

 1.1 简介

 1.2 使用lua脚本好处

2. Redis客户端中Lua脚本的使用

3. Redis服务器中lua环境

 3.1 创建并修改lua环境

 3.2 lua伪客户端

 3.3 lua_scripts字典

  在redis分布式锁的那篇博客中我们介绍到，为了避免在分布式环境中释放别人的锁，释放锁时需要使用 GET + DEL 两条命令，而为了让着两条命令作为一个原子操作执行，我们可以使用Lua脚本来保证，接下来我们介绍Lua脚本

1. Lua脚...]]></description><category></category></item><item><title><![CDATA[Redis（十九）：Redis分布式锁]]></title><link>https://blog.csdn.net/MOU_IT/article/details/119298146</link><guid>https://blog.csdn.net/MOU_IT/article/details/119298146</guid><author>MOU_IT</author><pubDate>Sun, 01 Aug 2021 16:13:52 +0800</pubDate><description><![CDATA[1. 分布式锁简介

 1.1 线程锁、进程锁和分布式锁 

 1.2 分布式锁实现方式

2. Redis分布式锁

 2.1SETNX命令

 2.2如何避免死锁

 2.3 如何处理锁过期

 2.4 如何避免释放别人的锁

1. 分布式锁简介

1.1 线程锁、进程锁和分布式锁 

  在介绍分布式锁时，我们有必要介绍线程锁、进程锁和分布式锁三者的区别：

（1）线程锁

 主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时，那么在...]]></description><category></category></item><item><title><![CDATA[InnoDB（二）：InnoDB体系架构]]></title><link>https://blog.csdn.net/MOU_IT/article/details/119084512</link><guid>https://blog.csdn.net/MOU_IT/article/details/119084512</guid><author>MOU_IT</author><pubDate>Sun, 25 Jul 2021 17:54:25 +0800</pubDate><description><![CDATA[1. 体系架构

  InnoDB的体系架构如下图所示：



  从InnoDB的体系架构图可以看出，InnoDB主要由后台线程、内存池和文件三个部分组成。后台线程的主要作用是负责刷新内存池中的数据，保证缓冲池中的内存缓存是最近的数据，此外将已修改的数据文件刷新到磁盘文件，同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行状态。

2. 后台线程

  InnoDB有不同的后台线程，用于处理不同的任务。

2.1 Master Thread

  master thread是一...]]></description><category></category></item><item><title><![CDATA[InnoDB（一）：Mysql存储引擎简介]]></title><link>https://blog.csdn.net/MOU_IT/article/details/119079574</link><guid>https://blog.csdn.net/MOU_IT/article/details/119079574</guid><author>MOU_IT</author><pubDate>Sun, 25 Jul 2021 12:15:17 +0800</pubDate><description><![CDATA[1. Mysql体系结构

2. Mysql存储引擎

1. Mysql体系结构

1.1 数据库和实例

数据库：数据库是物理操作系统或其它形式文件类型的集合。在mysql中，数据库文件可以时frm、MYD、MYI、ibd结尾的文件。当使用NDB时，数据库的文件可能不是操作系统上的文件，而是存放于内存之中的文件，但是定义仍然不变。
	实例：实例是mysql数据库后台线程以及一个共享内存区组成，共享内存可以被运行的后台线程所共享。需要牢记的是，数据库实例才是真正用于操作数据库文件的。
  mysql数据..]]></description><category></category></item><item><title><![CDATA[Redis（十八）：Redis协议]]></title><link>https://blog.csdn.net/MOU_IT/article/details/118878298</link><guid>https://blog.csdn.net/MOU_IT/article/details/118878298</guid><author>MOU_IT</author><pubDate>Sun, 18 Jul 2021 16:01:54 +0800</pubDate><description><![CDATA[1. Redis协议介绍

2. 请求和响应

 2.1 请求响应模式

 2.2 请求格式

 2.3 响应格式

3. 协议分类

1. Redis协议介绍

 Redis 支持 8 种核心数据结构，每种数据结构都有一系列的操作指令，除此之外，Redis 还有事务、集群、发布订阅、脚本等一系列相关的指令。为了方便以一种统一的风格和原则来设计和使用这些指令，Redis 设计了 RESP，即 Redis Serialization Protocol，中文意思是 Redis 序列化协议...]]></description><category></category></item><item><title><![CDATA[Linux内存管理（五）：PTmalloc、TCmalloc、Jemalloc比较]]></title><link>https://blog.csdn.net/MOU_IT/article/details/118464093</link><guid>https://blog.csdn.net/MOU_IT/article/details/118464093</guid><author>MOU_IT</author><pubDate>Sun, 04 Jul 2021 17:58:37 +0800</pubDate><description><![CDATA[1. 内存管理目标

2. 三种内存管理的比较

1. 内存管理目标

  内存管理的目的是实现了malloc()，free()以及一组其它的函数，以提供动态内存管理的支持。分 配器处在用户程序和内核之间，它响应用户的分配请求，向操作系统申请内存，然后将其返回给用户程序。

  为了保持高效的分配，分配器一般都会预先分配一块大于用户请求的内存， 并通过某种算法管理这块内存。来满足用户的内存分配要求，用户释放掉的内存也并不是立即就返回给操作系统，相反，分配器会管理这些被释放掉的空闲空间，以应对用户以后...]]></description><category></category></item><item><title><![CDATA[Linux内存管理（四）：Jemalloc]]></title><link>https://blog.csdn.net/MOU_IT/article/details/118460045</link><guid>https://blog.csdn.net/MOU_IT/article/details/118460045</guid><author>MOU_IT</author><pubDate>Sun, 04 Jul 2021 12:21:05 +0800</pubDate><description><![CDATA[1. Jemalloc简介

 jemalloc 是由 Jason Evans 在 FreeBSD 项目中引入的新一代内存分配器。它是一个通用的 malloc 实现，侧重于减少内存碎片和提升高并发场景下内存的分配效率，其目标是能够替代 malloc。jemalloc 应用十分广泛，在 Firefox、Redis、Rust、Netty 等出名的产品或者编程语言中都有大量使用。具体细节可以参考 Jason Evans 发表的论文 《A Scalable Concurrent malloc Implemen...]]></description><category></category></item></channel></rss>