PgSQL · 应用案例 · 相似文本识别与去重

背景 在云栖社区的问答区,有一位网友提到有一个问题: 表里相似数据太多,想删除相似度高的数据,有什么办法能实现吗? 例如: 银屑病怎么治? 银屑病怎么治疗? 银屑病怎么治疗好? 银屑病怎么能治疗好? 等等 解这个问题的思路 1. 首先如何判断内容的相似度,PostgreSQL中提供了中文分词,pg_trgm(将字符串切成多个不重复的token,计算两个字符串的相似度) . 对于本题,我建议采取中文分词的方式,首先将内容拆分成词组。 2.

MySQL · RocksDB · WAL(WriteAheadLog)介绍

概述 在RocksDB中每一次数据的更新都会涉及到两个结构,一个是内存中的memtable(后续会刷新到磁盘成为SST),第二个是WAL(WriteAheadLog)。 本篇文章主要就是来介绍WAL. WAL主要的功能是当RocksDB异常退出后,能够恢复出错前的内存中(memtable)数据,因此RocksDB默认是每次用户写都会刷新数据到WAL. 每次当当前WAL对应的内存数据(memtable)刷新到磁盘之后,都会新建一个WAL. 所有的WAL文件都是保存在WAL

MySQL · 特性分析 · (deleted) 临时空间

1. 简介 在运行 MySQL 的服务器上,偶尔出现 du 和 df 统计空间大小差别很大的情况,原因之一是 MySQL 的临时空间过大 在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink),然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用,这样就会导致我们明明删除了文件,但是磁盘空间却未被释放 这些已经删除,但空间未释放的文件,可以通过 lsof 看到,末尾标明

MySQL · 特性分析 · MySQL的预编译功能

背景 目前大部分关系型数据库执行sql的过程如下 对SQL语句进行词法和语义解析,生成抽象语法树 优化语法树,生成执行计划 按照执行计划执行,并返回结果 绝大部分的常用SQL语句都可以被分解成静态部分和动态部分。静态部分主要包括sql语句的关键字(如DML,DDL等)以及数据库的对象及其相关信息(如表名,视图名,字段名等)。动态部分主要是由数据里的存储的数据构成。一个稳定运行的数据库中执行的所有sql语句,如果我们只关注静态部分,而忽略动态部分(以问号或者占位符对动态部分

MSSQL · 最佳实践 · 如何监控备份还原进度

摘要 本期月报是SQL Server备份还原专题分享系列的第六期,打算分享给大家如何监控SQL Server备份还原进度。 场景引入 由于SQL Server备份还原操作是重I/O读写操作,尤其是当数据库或数据库备份文件比较大的到时候。那么,我们就有强烈的需求去监控备份还原的过程,时时刻刻把握备份还原的进度,以获取备份还原操作完成时间的心理预期以及对系统的影响。本期月报分享如何监控SQL Server备份还原进度。 监控备份还原进度 在SQL Server数据库中,监控数

MySQL · 源码分析 · 协议模块浅析

这里调用栈主要基于MySQL5.7, 因为重构了protocol模块的代码, 可能与5.6的函数调用有所差异. TL;DR (Not that long ..) 我们之前跟踪过三次握手的调用栈, 这里跳过认证, 主要考察验证完成后, server如何监听client发起的操作, 和如何返回一系列响应报文. 以及5.7在这个模块上相比5.6做了哪些扩展. 从网络读取请求 server调用Protocol_classic::read_packet(), 在这里进入网路等待,

MySQL · MyRocks · TTL特性介绍

概述 MyRocks TTL(Time To Live) 特性允许用户指定表数据的自动过期时间,表数据根据指定的时间在compact过程中进行清理。 MyRocks TTL 简单用法如下, 在comment中通过ttl_duration指定过期时间,ttl_col指定过期时间列 CREATE TABLE t1 ( a bigint(20) NOT NULL, b int NOT NULL, ts bigint(20) UNSIGNED NOT NULL,

MySQL · 引擎特性 · InnoDB 数据页解析

前言 之前介绍的月报中,详细介绍了InnoDB Buffer Pool的实现细节,Buffer Pool主要就是用来存储数据页的,是数据页在内存中的动态存储方式,而本文介绍一下数据页在磁盘上的静态存储方式以及相关的操作。由于数据页的结构涉及InnoDB非常底层的代码,因此各个版本的MySQL都可以参考。相关代码主要集中在page目录下。 基础知识 数据库采用数据页的形式组织数据。MySQL默认的非压缩数据页为16KB。在ibd中间中,0-16KB偏移量即为0号数据页,16K

MongoDB · myrocks · mongorocks 引擎原理解析

mongorocks 是基于著名的开源KV数据库RocksDB实现的一个MongoDB存储引擎,借助rocksdb的优秀特性,mongorocks能很好的支持一些高并发随机写入、读取的应用场景。 MongoDB 与 mongorocks 的关系 mongodb 支持多种引擎,目前官方已经支持了mmapv1、wiredtiger、in-Memory等,而mongorocks则是第三方实现的存储引擎之一(对应上图红框的位置)。 MongoDB KV存储引擎模型 Mon

MySQL · 引擎特性 · InnoDB 表空间加密

背景简介 InnoDB 表空间加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加密,从文件读到内存中时解密,目前广泛使用的是 YaSSL/OpenSSL 提供的 AES 加密算法,加密前后数据页大小不变,因此也称为透明加密。表空间加密相对于文件系统加密更加灵活,用户可以控制加密重要的表,防止被拖库导致的数据丢失。MySQL 官方在 5.7.11 中发布了表空间加密功能,Aliyun RDS 差不多在同时支持了 RDS MySQL 版的表空间加密,通过了“等保三级