本文档总结使用 TiDB 时的一些最佳实践,主要涉及 SQL 使用和 OLAP/OLTP 优化技巧,特别是一些 TiDB 专有的优化开关。建议先阅读讲解 TiDB 原理的三篇文章(讲存储,说计算,谈调度),再来看这篇文章。前言数据库是一个通用的基础组件,在开发过程中会考虑到多种目标场景,在具体的业务场景中,需要根据业务的实际情况对数据的参数或者使用方式进行调整。TiDB 是一个兼容 MySQL 协
转载
2024-05-28 19:54:58
187阅读
TiDB特点高可用水平拓展事务SQL支持TiDB架构和MySql不同,TiDB是一个分布式的数据库而不是单个进程,所以整个TiDB是由以下角色组成: TiKV, PD, TiDB, TiSpark。每个角色都是部署在多台机器上的进程组成的集群。TiKV PD TiDB功能TiKVTiKV负责数据的存储,对外而言,它就是一个提供key-value存储的引擎。但它存储的并不是离散的Key,而在一个范围
转载
2024-03-25 21:52:35
108阅读
背景最近在给一个物流系统做TiDB POC测试,这个系统是基于MySQL开发的,本次投入测试的业务数据大概10个库约900张表,最大单表6千多万行。这个规模不算大,测试数据以及库表结构是用Dumpling从MySQL导出,再用Lightning导入到TiDB中,整个过程非常顺利。系统在TiDB上跑起来后,通过Dashboard观察到有一条SQL非常规律性地出现在慢查询页面中,打开SQL一看只是个单
转载
2024-04-22 14:22:18
37阅读
目录引言索引的基本原理索引的实现1、二叉树2、B树3、B+树4、顺序访问指针的B+树 Sqlite中数据存储方式一个例子利用索引提高查找效率解释引言中问题引言这篇文章,里面讲到对于一个41G大小、包含百万条记录的数据库进行查询操作,如果利用了索引,可以把操作耗时从37s降到0.2s。 那么什么是索引呢?利用索引可以加快数据库查询操作的原理是什么呢?索引的基本原理数据库提供了一种持久化的数
作者:leeray
一、引言 日志一直是溯源系统运行错误的重要存在。TiDB 也不例外在系统中进行日志的记录。我们经常遇到的有两种。一种是 tidb.log 格式,记录系统运行时各类日志。另外一个就是慢查询日志,一般以 tidb-slow.log 命名。日志等级一般分为 5 种。从低到高依次是:“DEBUG”、“INFO”、“WARNNING”、“ERROR”、“CRITI
转载
2024-08-07 12:39:36
72阅读
表分区,注意事项确认表中是否存在唯一键(包括主键) ,如果存在,那么唯一键 中,必须包含分区表达式中用到的所有列如果表中不存在唯一键 ,那么第1条规则也就不需要遵守了分区列是主键列,那么分区列不可以是 NULL
分区表达式中列的数据类型,要与表中列的数据类型相符合删除分区一定会删除分区中所有数据,不会自动转移数据
MAXVALUE按时间分区默认左开右闭区间。1 表分区 RANGE-- 创建表
CR
转载
2024-04-24 21:36:52
300阅读
从存储层读取数据是 SQL 计算过程中最为耗时的部分之一,TiDB 目前支持从不同的存储和不同的索引中读取数据,索引选择得是否合理将很大程度上决定一个查询的运行速度。本章节将介绍 TiDB 如何选择索引去读入数据,以及相关的一些控制索引选择的方式。读表在介绍索引的选择之前,首先要了解 TiDB 有哪些读表的方式,这些方式的触发条件是什么,不同方式有什么区别,各有什么优劣。读表算子读表算子触发条件适
转载
2024-05-03 14:28:49
102阅读
“搜索”是内容类App产品非常重要的一个功能,“全文检索”是支持它不可或缺的一项基本能力。目前业界很多公司产品的业务数据已经向 TiDB 迁移了,但目前在 TiDB 上只能使用 SQL Like 对内容进行简单的检索。即便不考虑性能问题,SQL Like 仍然无法实现搜索场景下常见的信息检索需求,单纯使用 Like 会导致查询到有歧义的结果或满足搜索条件的结果无法返回。由于TiDB 全文检索能力的
转载
2024-04-21 10:49:27
40阅读
TiDB 是什么?TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。TiDB怎么来的?著名的开源分布式缓存服务 Codis 的作者,PingCAP联合创始人& CTO ,资深 infrastructure 工程师的
转载
2024-07-04 13:10:34
49阅读
本文介绍如何定位和解决读写热点问题。TiDB 作为分布式数据库,内建负载均衡机制,尽可能将业务负载均匀地分布到不同计算或存储节点上,更好地利用上整体系统资源。然而,机制不是万能的,在一些场景下仍会有部分业务负载不能被很好地分散,影响性能,形成单点的过高负载,也称为热点。TiDB 提供了完整的方案用于排查、解决或规避这类热点。通过均衡负载热点,可以提升整体性能,包括提高 QPS 和降低延迟等。常见热
转载
2024-05-22 13:05:11
131阅读
本文档用于总结在使用 TiDB 时候的一些最佳实践,主要涉及 SQL 使用、OLAP/OLTP 优化技巧,特别是一些 TiDB 专有的优化开关。 建议先阅读讲解 TiDB 原理的三篇文章( 说存储 , 说计算 , 谈调度 ,再来看这篇文章。前言数据库是一个通用的基础组件,在开发过程中会考虑到多种目标场景,在具体的业务场景中,需要根据业务的
索引用于在查询时提高效率之用。可以为每张表的某个字段定义索引来提高在该字段上的查询效率。由于数据库要处理的数据量非常大,而内存因为价格昂贵,而容量有限,且必须满足一定的实时性,因而对其中的数据的存储及索引方式进行研究,找出有效的数据组织方式是非常有必要的。磁盘数据库系统的典型的索引技术是B-tree索引。B-tree结构的主要目的是减少完成数据文件的索引查找所需要的磁盘I/O的数量。B-tree
转载
2024-04-28 22:22:40
95阅读
TiFlash 是 TiDB 的分析引擎,是 TiDB HTAP 形态的关键组件,TiFlash 源码阅读系列文章将从源码层面介绍 TiFlash 的内部实现。在前面的源码分析中对 TiFlash 的计算层和存储层都进行了深入的分析,其中 TiFlash DeltaTree 存储引擎设计及实现分析 (Part 1) TiFlash DeltaTree 存储引擎设计及实现分析 (Part
转载
2024-05-27 15:32:04
16阅读
在这我们将关系模型简单理解为 Table 和 SQL 语句,那么问题变为如何在 KV 结构上保存 Table 以及如何在 KV 结构上运行 SQL 语句。假设我们有这样一个表的定义:CREATE TABLE User {ID int,Name varchar(20),Role varchar(20),Age int,PRIMARY KEY (ID),Key idxAge (age)};
转载
2024-03-27 17:37:43
220阅读
TiDB特点高可用水平拓展事务SQL支持TiDB架构 和MySql不同,TiDB是一个分布式的数据库而不是单个进程,所以整个TiDB是由以下角色组成: TiKV, PD, TiDB, TiSpark。每个角色都是部署在多台机器上的进程组成的集群。TiKV PD TiDB功能TiKV TiKV负责数据的存储,对外而言,它就是一个提供key-value存储的引擎。但它存储的并不是离散的Key,而在一个
转载
2024-04-02 14:46:14
50阅读
Mysql索引-B树/B+树tip 索引好处初体验:select count(*) from ydl_user; -- 5.429
select * from ydl_user where user_id = 1000000; -- 0.355s
select * from ydl_user where user_name = 'Jennifer Susan Johnson'; -- 4.7
转载
2024-03-20 12:08:14
48阅读
一、摘要 数据库对于我们开发人员来说是相当的重要。我们在开发过程中都会使用到数据库,例如mysql,oracle等。而且在面试中基本上都会问到数据库。总的来说。就是数据库非常的重要。今天我们就来说一说数据库中的索引。 在介绍数据库的索引之前,我们先来了解一下两种数据结构B-tree和B+tree(数据库索引的底层实现)二、B-tree 我们常见的数据库系统,其索引使用的数据结构多是B-Tre
转载
2024-09-20 21:55:34
176阅读
目录1. TiDB Server架构2. sql语句的解析和编译2.1 Parse2.2 compile3. 行转化为KV对(聚簇表)4. SQL 读写相关模块4.1 DistSQL(复杂查询)4.2 KV(简单查询)5. 在线DDL相关模块6. GC机制与相关模块7. TiDB Server的缓存8. 热点小表缓存9. 总结1. TiDB Server架构protocol layer:处理客户端
转载
2024-09-11 09:19:55
67阅读
数据库表A有十万条记录,查询速度本来还可以,但导入一千条数据后,问题出现了。当选择的数据在原十万条记录之间时,速度还是挺快的;但当选择的数据在这一千条数据之间时,速度变得奇慢。 凭经验,这是索引碎片问题。检查索引碎片DBCC SHOWCONTIG(表),得到如下结果: DBCC SHOWCONTIG 正在扫描 'A' 表... 表: 'A'(884198200);索引 ID: 1,数据库
I. 空间索引 对于空间数据中几何对象的索引显然不能套用数据库现有的索引类型,其不确定的数据结构和数据操作方法使现有的索引并不能适用,因此无论是Oracle Spatial还是ArcSDE都是采用域索引(Domain Index[1] )来实现,简单地说就是创建一个数据库中原来没有的新的索引类型。 · Oracle Spatial 1. 索引类型SPATIAL_INDEX Oracle
转载
2024-08-02 10:58:38
37阅读