MySQL · 引擎特性 · InnoDB 同步机制
前言现代操作系统以及硬件基本都支持并发程序,而在并发程序设计中,各个进程或者线程需要对公共变量的访问加以制约,此外,不同的进程或者线程需要协同工作以完成特征的任务,这就需要一套完善的同步机制,在Linux内核中有相应的技术实现,包括原子操作,信号量,互斥锁,自旋锁,读写锁等。InnoDB考虑到效率和监控两方面的原因,实现了一套独有的同步机制,提供给其他模块调用。本文的分析默认基于MySQL...
View ArticleMySQL · myrocks · myrocks index condition pushdown
index condition pushdownIndex condition pushdown(ICP)是直到mysql5.6才引入的特性,主要是为了减少通过二级索引查找主键索引的次数。目前ICP相关的文章也比较多,本文主要从源码角度介绍ICP的实现。讨论之前,我们先再温习下。以下图片来自mariadb引入ICP之前引入ICP之后再来看个例子CREATE TABLE `t1` ( `a`...
View ArticlePgSQL · 案例分享 · PostgreSQL+HybridDB解决企业TP+AP混合需求
背景随着IT行业在更多的传统行业渗透,我们正逐步的在进入DT时代,让数据发挥价值是企业的真正需求,否则就是一堆废的并且还持续消耗企业人力,财力的数据。传统企业可能并不像互联网企业一样,有大量的开发人员、有大量的技术储备,通常还是以购买IT软件,或者以外包的形式在存在。数据的核心 -...
View ArticleMongoDB · 特性分析 · 网络性能优化
从 C10K 说起对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解。『C10K』概念最早由 Dan Kegel 发布于其个人站点,即出自其经典的《The C10K...
View ArticleMySQL · 捉虫动态 · event_scheduler 慢日志记错
问题背景最近遇到了 event_scheduler 在记录慢日志时的一个 bug,在这里分享给大家。为了方便描述问题,先构造一个简单的 event,如下:delimiter // create event event1 on schedule every 5 second starts now() ends date_add(now(), interval 1 hour) do begin...
View ArticlePgSQL · 引擎介绍 · 向量化执行引擎简介
摘要本文为大家介绍一下向量化执行引擎的引入原因,前提条件,架构实现以及它能够带来哪些收益。 希望读者能够通过对这篇文章阅读能够对向量化执行引擎的应用特征与架构有一个概要的认识。关键字向量化执行引擎, MonetDB,Tuple, 顺序访问,随机访问, OLAP,...
View ArticleSQL Server · 特性分析 · 2012列存储索引技术
摘要MS SQL Server 2012首次引入了列存储索引(Columnstore Index)来加速数据分析(OLAP)和数据仓库(Data Warehouse)场景的查询,它主要是通过将数据按列压缩存储的方式来减少查询对磁盘IOPS开销和CPU开销,最终达到提升查询效率,降低响应时间的目的。当然,列存储索引也不是一把万能的钥匙,在SQL Server...
View ArticlePgSQL · 乱入拜年 · 小鸡吉吉和小象Pi吉(PostgreSQL)的鸡年传奇
背景我家有只小鸡鸡,它的名字叫吉吉。吉吉有一位铁杆鸡友大象Pi吉哥哥(PostgreSQL)。吉吉给大伙拜年啦,祝大家鸡年吉祥,新年新气息,与好鸡友大象哥哥愉快的玩耍,鸡情四射。故事从吉吉和好鸡友大象哥哥偶遇的那天开始。有一天,大象哥哥摆下国际象棋擂台,邀请各路英豪前来,就这样和吉吉偶遇啦。《想挑战AlphaGO吗?先和PostgreSQL玩一玩??...
View ArticleMySQL · 特性分析 · 5.7 error log 时区和系统时区不同
问题描述现象5.6 和 5.7 时区设置相同,select now()也显示当前时间5.7 error log 中时间和当前时间差8小时问题分析5.6 写 error log 函数如下取时间的函数是localtime_r(&skr, &tm_tmp)日志中时间和系统时区相同 static void print_buffer_to_file(enum loglevel level,...
View ArticleTokuDB · 源码分析 · 一条query语句的执行过程
Mysql是基于代价cost来选择索引,如果一个表有好几个索引,optimizer会分别计算每个索引访问的代价,选择代价最小的索引进行访问,这个索引也被称为access path。Pickup indexMysql在执行query语句的时候会在server层计算每个可选索引的代价,并选择代价最小的索引作为访问路径(access path)去引擎读取数据。...
View ArticleAliSQL · 开源 · Sequence Engine
Introduction单调递增的唯一值,是在持久化数据库系统中常见的需求,无论是单节点中的业务主键,还是分布式系统中的全局唯一值,亦或是多系统中的幂等控制。不同的数据库系统有不同的实现方法,比如MySQL提供的AUTO_INCREMENT,Oracle,SQL...
View ArticleMySQL · myrocks · myrocks之备份恢复
myrocks支持逻辑备份和物理备份,逻辑备份仍然采用mysqldump,物理备份采用自己开发的myrocks_hotbackup工具,传统的物理备份工具Xtrabackup不支持rocksdb。由于rocksdb的存储特性,myrocks不管是逻辑备份还是物理备份,与innodb的备份恢复均有较大差别。逻辑备份myrocks的mysqldump工具支持rocksdb的逻辑备份,其使用方式与原生的m...
View ArticleMySQL · 挖坑 · LOCK_active_mi/LOCK_msp_map 优化思路
背景在MySQL中Slave相关操作一直存在一把大锁——LOCK_active_mi (5.5及之前版本,以及MariaDB),或LOCK_msp_map(5.6及之后的版本)。在Slave操作中大家可能经常会遇到如下懵逼的操作:线程1:STOP SLAVE;有事务要回滚,一直不结束,然后LOCK_active_mi一直被这个线程持有线程2:SHOW SLAVE...
View ArticleMySQL · 源码分析 · 词法分析及其性能优化
Table of Contents1. 简介2. 背景知识3. 查找树的实现3.1. 树的查找3.2. 树的产生4. 试试折半查找5. 总结简介MySQL 支持标准的 SQL 语言,具体实现的时候必然要涉及到词法分析和语法分析。早期的程序可能会优先考虑手工实现词法分析和语法分析,现在大多数场合下都会采用工具来简化实现。MySQL、PostgreSQL 等采用 C/C++...
View ArticleSQL优化 · 经典案例 · 索引篇
Introduction在这些年的工作之中,由于SQL问题导致的数据库故障层出不穷,下面将过去六年工作中遇到的SQL问题总结归类,还原问题原貌,给出分析问题思路和解决问题的方法,帮助用户在使用数据库的过程中能够少走一些弯路。总共包括四部分:索引篇,SQL改写篇,参数优化篇,优化器篇四部分,今天将介绍第一部分:索引篇。索引问题是SQL问题中出现频率最高的,常见的索引问题包括:无索引,隐式转换。当数据库...
View ArticleMySQL · 新特性分析 · CTE执行过程与实现原理
众所周知,Common table expression(CTE)是在大多数的关系型数据库里都存在的特性,包括ORACLE, SQLSERVER,POSTGRESQL等,唯独开源数据库老大MySQL缺失。CTE作为一个方便用户使用的功能,原本是可以利用普通的SQL语句替代的,但是对于复杂的CTE来说,要模拟出CTE的效果还是需要很大的功夫。如果考虑性能那就更是难上加难了。2013年Guilhem...
View ArticlePgSQL · 源码分析 · PG优化器物理查询优化
在之前的一篇月报中,我们已经简单地分析过PG的优化器(PgSQL · 源码分析 · PG优化器浅析),着重分析了SQL逻辑优化,也就是尽量对SQL进行等价或者推倒变换,以达到更有效率的执行计划。本次月报将会深入分析PG优化器原理,着重物理查询优化,包括表的扫描方式选择、多表组合方式、多表组合顺序等。表扫描方式表扫描方式主要包含顺序扫描、索引扫描以及Tid扫描等方式,不同的扫描方式Seq...
View ArticleSQL Server · 特性介绍 · 聚集列存储索引
摘要微软在SQL Server 2012引入了列存储技术,使得OLAP和Data warehouse场景性能提升10X,并且数据压缩能力超过传统表7X。这项技术包含三个方面的创新:列存储索引、Batch Mode Processing和基于Column Segment的压缩。但是,SQL Server 2012列存储索引的一个致命缺点是列存储索引表会进入只读状态,用户无法更新操作。SQL...
View ArticlePgSQL · 应用案例 · 聚集存储 与 BRIN索引
背景在现实生活中,人们的各种社会活动,会产生很多的行为数据,比如购物、刷卡、打电话、开房、吃饭、玩游戏、逛网站、聊天...
View ArticlePgSQL · 应用案例 · GIN索引在任意组合查询中的应用
背景很多人小时候都有一个武侠梦,独孤求败更是金庸武侠小说里的一位传奇人物。纵横江湖三十馀载,杀尽仇寇奸人,败尽英雄豪杰,天下更无抗手,无可奈何,惟隐居深谷,以雕为友。...
View Article