首页 > 其他分享 >TiDB的简单介绍以及进行资源限制的方式与方法

TiDB的简单介绍以及进行资源限制的方式与方法

时间:2023-09-24 19:11:43浏览次数:128  
标签:TiFlash 限制 max 数据库 TiDB TiKV 简单 分布式

TiDB的简单介绍以及进行资源限制的方式与方法


TiDB的简介

TiDB是一个分布式数据库, 简介为: 

TiDB 是一个开源的分布式关系型数据库,它兼具了分布式数据库的水平扩展性和传统关系型数据库的 ACID 事务特性。
TiDB 最初由 PingCAP 公司开发,并于 2015 年开源发布。创始人自己开发发布过 codis redis分布式中间件. 在redis cluster发布之前非常流行. 

TiDB 的设计目标是解决传统关系型数据库在大规模数据集、高并发读写和高可用性方面的挑战。
它采用了分布式架构,通过将数据水平分片存储在多个节点上,以支持数据的水平扩展。
同时,TiDB 采用了分布式事务协议以保证 ACID 事务的一致性和可靠性。

与传统数据库不同的是,TiDB 采用了分布式共享存储架构,其中包括了三个核心组件:

TiDB Server:负责接收和处理 SQL 请求,处理连接管理、查询优化、执行计划等任务。
TiKV:是一种分布式 Key-Value 存储引擎,负责存储数据和处理事务。它以水平分片的方式存储数据,并提供高度可用性和一致性的保证。
PD(Placement Driver):是 TiDB 中的元数据管理模块,负责集群的拓扑管理、数据的分片调度和故障自动处理等。

TiDB 还提供了一些高级特性,如分布式 SQL 查询优化器、自动化水平扩展、副本数据自动修复、在线数据迁移等。
此外,TiDB 还支持使用一些常见的 SQL 方言(如 MySQL、PostgreSQL)的语法和协议,以便现有应用可以无缝迁移到 TiDB 上。

总的来说,TiDB 是一个以分布式架构为基础的开源关系型数据库,具备可水平扩展、高性能、高可用性和 ACID 事务特性等优势,
适用于大规模数据存储和高并发读写的场景。

另外TiDB还有一个 TiFlash 的组件作为OLAP的扩展特性. 
TiFlash fork了 ClickHouse 的代码, 并且与TiKV的raft 日志深度集成
可以自己从TiKV里面获取数据库变化数据, 然后从行存转换为列存. 

TiDB的部署方式

TiDB建议较高的硬件配置进行部署. 

并且TiDB-TiKV-TiFlash 不建议混布,会出现比较严重的资源争用. 

建议至少3个PD, 三个TiDB, 三个TiKV 并且最小的副本数建议设置为3 
不建议单副本运行 会出现很严重的数据丢失的风险. 

TiFlash 可以部署单节点, 并且使用单副本. 
TiFlash 的数据都是来自于TiKV, 副本丢失后可以从Tikv中再次读取

非常不建议 TiKV和TiFlash以及他们互相部署到同一块硬盘上面
建议至少部署到不同的硬盘, 一方面保证性能, 另一方面保证数据安全性. 

混布时的资源限制

TiDB默认是单服务器单独部署一个role一个node
所以他会最大化的使用机器的资源
如果是混布, 会导致非常严重的资源争用,大查询时会立即导致系统宕机. 
所以需要进行一下资源限制.
建议方式:
tiup cluster edit-config xxxxtidb
建议在
server_configs: 下面进行全局修改. 一个范例为:
server_configs:
  tidb:
    performance.max-procs: 32
  tikv:
    raftstore.apply-pool-size: 16
    readpool.unified.max-thread-count: 16
    storage.block-cache.capacity: 64G
  pd:
    replication.enable-placement-rules: true
    replication.location-labels:
    - host
  tidb_dashboard: {}
  tiflash:
    performance.max-procs: 24
    performance.memory-quota: 128G

结果也比较简单, 可以明确看出来
max-procs 限制CPU的多少
memory 后者是block-cache 限制内存的大小. 

TiKV通过
    raftstore.apply-pool-size: 16
    readpool.unified.max-thread-count: 16
方式限制CPU的使用. 

标签:TiFlash,限制,max,数据库,TiDB,TiKV,简单,分布式
From: https://www.cnblogs.com/jinanxiaolaohu/p/17726444.html

相关文章

  • 6. 简单基因家族分析
    2023.09.241.任务背景  芝麻是一种油料作物.产油比其他作物高很多,这里以基因的背景来研究芝麻产油的原因.这里我们专门研究FAD4基因,它在油脂合成中也起到重要作用.我们对比不同作物的FAD4基因的拷贝数,研究它对产油的影响.  下图是我们要得出的结论,我们发现FAD4在拟南......
  • Oracle process/session/cursor/tx/tm的简单学习
    Oracleprocess/session/cursor/tx/tm的简单学习Oracle的部署模式Oracle安装时有专用模式和共享模式的区别共享模式(Sharedmode):在共享模式下,会话可以同时读取数据库的数据,多个会话可以并发地进行读取操作。这意味着多个会话可以共享相同的数据快照,并且彼此之间不会阻塞。......
  • 78.一个简单的存储过程
    delimiter$$createtabletest.t3(idintnotnullprimarykey,namevarchar(20));truncatetablet3;dropprocedureifexistsdata;createproceduredata(iniint)beginwhilei<100000doinsertintotest.t3values(i,'菠萝');......
  • 开发一个简单的swift 包
    swift对于包包含了比较严格的访问控制,套路上与rust比较类似,一般开发的项目都是自己项目的代码,以及引用别人开发好的包,但是很多时候可能会有自己开发包共享别人的场景简单包可以直接使用swift的cli创建,或者手工代码结构 ├──Package.swift└──Sour......
  • QT中QLineEdit设置IP输入限制
    QT中设置QLineEdit只允许输入IP格式的数据,我们可以使用正则表达式,不过在QT5和QT6中有一点点不一样(QT5中是QRegExp和QRegExpValidator,QT6中是QRegularExpression和QRegularExpressionValidator):QT5#include<QRegExp>#include<QRegExpValidator>ui->lineEdit->setValidator(......
  • Mysql简单的学习记录(上)
    MySql一、DDL(操作数据库、数据表)创建数据库createdatabase数据库名称查询数据库showdatabasescreatedatabaseifnotexists数据库名称删除数据库dropdatabase数据库名称dropdatabaseifexists数据库名称使用数据库selectdatabase......
  • Mysql简单的学习记录(下)
    一、约束概念作用于列上的规则,用于限制加入表的数据保证数据库正确性、有效性、完整性约束的分类约束名称描述关键字非空保证列中所有数据不为nullnotnull唯一保证列中所有数据不相同unique主键主键是一行数据唯一标识,非空且唯一primarykey......
  • C++ STL 容器简单讲解
    STL简单讲解网上有很多很好的资料可以参考而直接看标准是最准确清晰的vectorstackqueue/priority_queuedequearraymap/multimapset/multisetunordered_mapunordered_set关于指针和迭代器!!!pbds……本文默认认为读者会基本的STL应用。一切STL......
  • nicegui:Python 图形界面库,简单好用
    #前言在现代计算机应用程序开发中,图形用户界面(GUI)是用户与程序交互的重要组成部分。然而,GUI开发往往需要大量的代码和复杂的布局,给开发者带来了一定的挑战。在本篇博文中,将介绍nicegui,它是一个简单易用的图形用户界面库,提供了一种简化GUI开发的方式,使开发者能够更快速地构......
  • 一个简单的DVWA盲注
    安装江湖规矩先用'干一下,1‘  提示不存在ID,那么用"干一下, 他显示存在了,那是为什么,只能是当为'时被闭合掉了,报错了才会这样,那么我们使用1'--+测试一下想法 存在,我们的想法是成立的。那么就能判断出这是一个布尔盲注,但如果要用时间盲注的话也可以。接下来我们通过leng......