编程语言:SQL
Oracle PostgreSQL MySQL中 Sequence 的使用
一道 Sequence 的“开水白菜”,敬请“享用”。
探究Presto SQL引擎(1)-巧用Antlr
文本介绍了antlr的基本用法以及如何使用antlr4实现解析SQL查询CSV数据,更加深入理解Presto查询引擎支持的SQL语法以及实现思路。
慢SQL治理分享
真实的慢SQL往往会伴随着大量的行扫描、临时文件排序或者频繁的磁盘flush,直接影响就是磁盘IO升高,正常SQL也变为了慢SQL,大面积执行超时。
Interactive Querying with Apache Spark SQL at Pinterest
To achieve our mission of bringing everyone inspiration through our visual discovery engine, Pinterest relies heavily on making data-driven decisions to improve the Pinner experience for over 475 million monthly active users. Reliable, fast, and scalable interactive querying is essential to make those data-driven decisions possible. In the past, we published how Presto at Pinterest serves this function. Here, we’ll share how we built a scalable, reliable, and efficient interactive querying platform that processes hundreds of petabytes of data daily with Apache Spark SQL. Through an elaborate discussion on various architecture choices, challenges along the way, and our solutions for those challenges, we share how we made interactive querying with Spark SQL a success.
Debezium event flattening with SQL in Snowflake
Learn how we replicate MySQL tables in our Snowflake data warehouse.
比开源快30倍的自研SQL Parser设计与实践
本文通过介绍词法语法分析器技术和业界的做法,以及过去使用自动生成的词法语法分析器遇到的问题,分享自研SQL Parser的设计与实践,以及其带来的性能和功能的提升。
使用 TiDB 的 SQL 解析器生成 SQL 指纹
本文主要介绍如何借助 TiDB SQL 解析自定义生成 SQL 指纹,采用了一种有别于 pt-fingerprint(https://www.percona.com/doc/percona-toolkit/3.0/pt-fingerprint.html) 的方式。
Let's Fluent:更顺滑的MyBatis
Fluent MyBatis已开源。
Mybatis-Plus的应用场景及注入SQL原理分析
本文介绍了传统MyBatis开发中的弊端,通过MyBatis-plus内置通用 Mapper和条件构造器,可以感受到MyBatis-plus对于单表CRUD的便捷性,并且针对MyBatis-plus的SQL自动注入原理进行详细的源码分析。
Flink在唯品会的实践
唯品会自2017年开始基于k8s深入打造高性能、稳定、可靠、易用的实时计算平台,支持唯品会内部业务在平时以及大促的平稳运行。现平台支持Flink、Spark、Storm等主流框架。本文主要分享Flink的容器化实践应用以及产品化经验。
【唯实践】线下SQL性能自动化分析实践
长期以来数据库慢查询基本都是等到代码发布上线才被识别出来。从产品质量建设和保障角度来说这已经后知后觉。唯品会内部开发了线下SQL语句自动化分析工具,尽量避免有风险的SQL语句遗留上线。接下来将为你介绍这个工具的主要功能和技术实现。
PostgreSQL如何查找某一事务中的完整SQL
DBA 经常需要排查某一个事务中有哪些 SQL 的场景。典型的 case 就是 DB 有一个 lock 报警,从系统表中查看发现是1个 update 等待的 SQL 是1个 select。熟悉 PostgreSQL 的同学都知道:在 PostgreSQL 中,由于特有的 MVCC 机制,读不阻塞写,写不堵塞读。
那么为什么会产生这种 lock?
实际就是因为这个 select 处于一个事务中,事务中有其他 update/delete 等写入操作持有后面的其他事务中的 update 操作所需要的 lock。此时就需要到 DB log 去排查这个 select 所处的事务的完整的全部 SQL,反馈给业务线的开发同学,以便于进一步优化。
一文详解SQL关联子查询
本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询。
在背景介绍中我们将讲讲常见的关联子查询的语义,关联子查询语法的好处以及其执行时对数据库系统的挑战。第二章中我们将主要介绍如何将关联子查询改写为普通的查询的形式,也就是解关联。第三章中我们会介绍解关联中的优化方法。
Cobar SQL审计的设计与实现
笔者有幸也曾在公司内的Cobar上做过定制开发,开发的功能是SQL审计。
从数据库产品的运营角度看,统计分析执行过的SQL是一个必要的功能;从安全角度看,信息泄露、异常SQL也需要被审计。
SQl审计需要审计哪些信息?通过调研,大致确定要采集执行的SQL、执行时间、来源host、返回行数等几个维度。
SQL审计的需求很简单,但就算是一个很简单的需求放在数据库中间件的高并发、低延迟,单机QPS可达几万到十几万的场景下都需要谨慎考虑,严格测试。
举个例子,获取操作系统时间,在Java中直接调用 System.currentTimeMillis(); 就可以,但在Cobar中如果这么获取时间,就会导致性能损耗非常严重(怎么解决?去Cobar的github仓库上看看代码吧)。
索引设计(组合索引不适用场景改造)
本文主要介绍 MySQL 组合索引的不适用场景以及改造方案。
Evolving Schemaless into a Distributed SQL Database
2016年,我们发表了关于Schemaless--Uber Engineering的可扩展数据存储的文章(一、二)。我们介绍了Schemaless的设计以及解释了开发它的原因。今天这篇文章我们要讲的是Schemaless如何演进成一个通用的事务性数据库Docstore。