首页 文章 精选 留言 我的

精选列表

搜索[数据库连接池],共10000篇文章
优秀的个人博客,低调大师

TiDB 3.0.12 发布,分布式 NewSQL 数据库

TiDB3.0.12现已发布,该版本更新内容如下: TiDB 3.0.12 兼容性变化 TiDB 修复慢日志中记录 prewrite binlog 的时间部分计时不准确问题。原本计时的字段名是Binlog_prewrite_time,这次修正后,名称更改为Wait_prewrite_binlog_time。#15276 新功能 TiDB 支持通过alter instance语句动态加载已被替换的证书文件#15080#15292 添加cluster-verify-cn配置项,配置后必须是对应 CN 证书才使用 status 服务#15164 在每个 TiDB server 中添加对 DDL 请求的一个限流的功能,从而降低 DDL 请求冲突报错频率#15148 支持在 binlog 写入失败时,TiDB 退出#15339 Tools TiDB Binlog Drainer 新增kafka-client-id配置项,支持连接 Kafka 客户端配置客户端 ID#929 Bug 修复 TiDB 使GRANT/REVOKE在对多个用户修改时,保证原子性#15092 修复在分区表上面悲观锁的加锁未能锁住正确的行的问题#15114 建索引长度超过限制时,使报错信息根据配置中max-index-length的值显示#15130 修复FROM_UNIXTIME函数小数点位数不正确的问题#15270 修复一个事务中删除自己写的记录导致冲突检测失效或数据索引不一致问题#15176 TiKV 修复一个在关闭一致性检查参数时,在事务中插入一个已存在的 Key 然后立马删除,导致冲突检测失效或数据索引不一致的问题#7054 Raftstore 引入流控机制,解决没有流控可能导致追日志太慢可能导致集群卡住,以及事务大小太大会导致 TiKV 间连接频繁重连的问题#7072#6993 PD 修复 PD 因处理 Region heartbeat 时的数据竞争导致 Region 信息不正确的问题#2233 TiDB Ansible 支持一个集群部署多个 Grafana/Prometheus/Alertmanager#1198 更新说明:https://pingcap.com/docs-cn/v3.1/releases/3.0.12/

优秀的个人博客,低调大师

TiDB 3.0.11 发布,分布式 NewSQL 数据库

TiDB3.0.11现已发布,该版本更新内容如下: TiDB 3.0.11 兼容性变化 TiDB 新增max-index-length配置项,用于控制索引支持的最大长度,用户可自由选择兼容 v3.0.7 之前版本或者兼容 MySQL#15057 新功能 TiDB 新增在information_schema.PARTITIONS表中显示分区表的分区元信息的功能#14849 TiDB Binlog 新增 TiDB 集群之间数据双向复制功能#884#909 TiDB Lightning 新增配置 TLS 功能#44#270 TiDB Ansible 优化create_user.yml的逻辑,中控机使用的用户不必和ansible_user一致#1184 Bug 修复 TiDB 修复由于涉及Union的查询没有标记为只读,在乐观事务开启重试时会导致 Goroutine 泄露的问题#15076 修复执行SET SESSION tidb_snapshot = 'xxx';语句后,由于执行时未正确使用tidb_snapshot变量的值,导致SHOW TABLE STATUS未正确输出快照时刻表状态的问题#14391 修复Sort Merge Join与ORDER BY DESC在同一条 SQL 语句中时,输出结果不正确的问题#14664 修复创建分区表时,由于使用不支持的表达式,导致 TiDB server panic 的问题,修复后返回This partition function is not allowed错误信息#14769 修复执行select max() from subquery语句且 Subquery 包含Union的子查询时,输出结果不正确的问题#14944 修复执行DROP BINDING语句解除执行计划绑定后,执行SHOW BINDINGS语句系统返回错误信息的问题#14865 修复查询语句中别名长度大于 256 时,由于在查询结果中未按照 MySQL 协议对别名截断,导致连接被断开的问题#14940 修复字符串类型被用作DIV中时,查询结果可能不正确的问题,例如:select 1 / '2007' div 1现在可以被正确地执行#14098 TiKV 优化日志输出,删除部分不必要的日志#6657 修复 peer 在高负载情况下若被删除可能导致 panic 的问题#6704 修复 Hibernate Region 在某些特殊条件下未被正确唤醒的问题#6732#6738 TiDB Ansible 修复tidb-ansible中失效、过期的文档链接#1169 修复wait for region replication completetask 可能出现未定义变量的问题#1173 更新说明: https://pingcap.com/docs-cn/v3.1/releases/3.0.11/

优秀的个人博客,低调大师

TiDB 3.0.8 发布,分布式 NewSQL 数据库

TiDB3.0.8现已发布,该版本更新内容如下: TiDB SQL 优化器 修复 SQL Binding 因为 cache 更新不及时,导致绑定计划错误的问题#13891 修复当 SQL 包含符号列表(类似于 “?, ?, ?” 这样的占位符)时,SQL Binding 可能失效的问题#14004 修复 SQL Binding 由于原 SQL 以;结尾而不能创建/删除的问题#14113 修复PhysicalUnionScan算子没有正确设置统计信息,导致查询计划可能选错的问题#14133 移除minAutoAnalyzeRatio约束使自动 analyze 更及时#14015 SQL 执行引擎 修复INSERT/REPLACE/UPDATE ... SET ... = DEFAULT语法会报错的问题,修复DEFAULT表达式与虚拟生成列配合使用会报错的问题#13682 修复INSERT语句在进行字符串类型到浮点类型转换时,可能会报错的问题#14011 修复HashAggExecutor 并发值未被正确初始化,导致聚合操作执行在一些情况下效率低的问题#13811 修复 group by item 被括号包含时执行报错的问题#13658 修复 TiDB 没有正确计算 group by item,导致某些情况下 OUTER JOIN 执行会报错的问题#14014 修复向 Range 分区表写入超过 Range 外的数据时,报错信息不准确的问题#14107 鉴于 MySQL 8 即将废弃PadCharToFullLength,revert PR#10124并撤销PadCharToFullLength的效果,以避免一些特殊情况下查询结果不符合预期#14157 修复ExplainExec中没有保证close()的调用而导致EXPLAIN ANALYZE时造成 goroutine 泄露的问题#14226 DDL 优化 “change column”/“modify column” 的输出的报错信息,让人更容易理解#13796 新增SPLIT PARTITION TABLE语法,支持分区表切分 Region 功能#13929 修复创建索引时,没有正确检查长度,导致索引长度超过 3072 字节没有报错的问题#13779 修复由于分区表添加索引时若花费时间过长,可能导致输出GC life time is shorter than transaction duration报错信息的问题#14132 修复在DROP COLUMN/MODIFY COLUMN/CHANGE COLUMN时没有检查外键导致执行SELECT * FROM information_schema.KEY_COLUMN_USAGE语句时发生 panic 的问题#14105 Server Statement Summary 功能改进: 新增大量的 SQL 指标字段,便于对 SQL 进行更详细的统计分析#14151,#14168 新增stmt-summary.refresh-interval参数用于控制定期将events_statements_summary_by_digest表中过期的数据移到events_statements_summary_by_digest_history表,默认间隔时间:30min#14161 新增events_statements_summary_by_digest_history表,保存从events_statements_summary_by_digest中过期的数据#14166 修复执行 RBAC 相关的内部 SQL 时,错误输出 binlog 的问题#13890 新增server-version配置项来控制修改 TiDB server 版本的功能#13906 新增通过 HTTP 接口恢复 TiDB binlog 写入功能#13892 将GRANT roles TO user所需要的权限由GrantPriv修改为ROLE_ADMIN或SUPER,以与 MySQL 保持一致#13932 当GRANT语句未指定 database 名时,TiDB 行为由使用当前 database 改为报错No database selected,与 MySQL 保持兼容#13784 修改REVOKE语句执行权限从SuperPriv改成用户只需要有对应 Schema 的权限,就可以执行REVOKE语句,与 MySQL 保持一致#13306 修复GRANT ALL语法在没有WITH GRANT OPTION时,错误地将GrantPriv授权给目标用户的问题#13943 修复LoadDataInfo中调用addRecord报错时,报错信息不包含导致LOAD DATA语句行为不正确信息的问题#13980 修复因查询中多个 SQL 语句共用同一个StartTime导致输出错误的慢查询信息的问题#13898 修复batchClient处理大事务时可能造成内存泄露的问题#14032 修复system_time_zone固定显示为CST的问题,现在 TiDB 的system_time_zone会从mysql.tidb表中的systemTZ获取#14086 修复GRANT ALL语法授予权限不完整(例如Lock_tables_priv)的问题#14092 修复Priv_create_user权限不能CREATE ROLE和DROP ROLE的问题#14088 将ErrInvalidFieldSize的错误码从1105(Unknow Error)改成3013#13737 新增SHUTDOWN命令用于停止 TiDB Server,并新增ShutdownPriv权限#14104 修复DROP ROLE语句的原子性问题,避免语句执行失败时,一些 ROLE 仍然被非预期地删除#14130 修复 3.0 以下版本升级到 3.0 时,tidb_enable_window_function在SHOW VARIABLE语句的查询结果错误输出 1 的问题,修复后输出 0#14131 修复 TiKV 节点下线时,由于gcworker持续重试导致可能出现 goroutine 泄露的问题#14106 在慢日志中记录 Binlog 的Prewrite的时间,提升问题追查的易用性#14138 tidb_enable_table_partition变量支持 GLOBAL SCOPE 作用域#14091 修复新增权限时未正确将新增的权限赋予对应的用户导致用户权限可能缺失或者被误添加的问题#14178 修复当 TiKV 链接断开时,由于rpcClient不会关闭而导致CheckStreamTimeoutLoopgoroutine 会泄露的问题#14227 支持基于证书的身份验证(使用文档)#13955 Transaction 创建新集群时,tidb_txn_mode变量的默认值由""改为"pessimistic"#14171 修复悲观事务模式,事务重试时单条语句的等锁时间没有被重置导致等锁时间过长的问题#13990 修复悲观事务模式,因对没有修改的数据未加锁导致可能读到不正确数据的问题#14050 修复 mocktikv 中 prewrite 时,没有区分事务类型,导致重复的 insert value 约束检查#14175 修复session.TxnState状态为Invalid时,事务没有被正确处理导致 panic 的问题#13988 修复 mocktikv 中ErrConfclit结构未包含ConflictCommitTS的问题#14080 修复 TiDB 在 Resolve Lock 之后,没有正确处理锁超时检查导致事务卡住的问题#14083 Monitor LockKeys新增pessimistic_lock_keys_duration监控#14194 TiKV Coprocessor 修改 Coprocessor 遇到错误时输出日志的级别从error改成warn#6051 修改统计信息采样数据的更新行为从直接更行改成先删除再插入,更新行为与 tidb-server 保持一致#6069 Raftstore 修复因重复向peerfsm发送 destory 消息,peerfsm被多次销毁导致 panic 的问题#6297 split-region-on-table默认值由true改成false,默认关闭按 table 切分 Region 的功能#6253 Engine 修复极端条件下因 RocksDB 迭代器错误未正确处理导致可能返回空数据的问题#6326 事务 修复悲观锁因锁未被正确清理导致 Key 无法写入数据,且出现 GC 卡住的问题#6354 优化悲观锁等锁机制,提升锁冲突严重场景的性能#6296 将内存分配库的默认值由tikv_alloc/default改成jemalloc#6206 PD Client 新增通过context创建新 client,创建新 client 时可设置超时时间#1994 新增创建KeepAlive连接功能#2035 优化/api/v1/regionsAPI 的性能#1986 修复删除tombstone状态的 Store 可能会导致 panic 的隐患#2038 修复从磁盘加载 Region 信息时错误的将范围有重叠的 Region 删除的问题#2011,#2040 将 etcd 版本从 3.4.0 升级到 3.4.3 稳定版本,注意升级后只能通过 pd-recover 工具降级#2058 Tools TiDB Binlog 修复 Pump 由于没有收到 DDL 的 commit binlog 导致 binlog 被忽略的问题#853 TiDB Ansible 回滚被精简的配置项#1053 优化滚动升级时 TiDB 版本检查的逻辑#1056 TiSpark 版本升级到 2.1.8#1061 修复 Grafana 监控上 PD 页面 Role 监控项显示不正确的问题#1065 优化 Grafana 监控上 TiKV Detail 页面上Thread Voluntary Context Switches和Thread Nonvoluntary Context Switches监控项#1071 详细信息: https://pingcap.com/docs-cn/stable/releases/3.0.8/ https://github.com/pingcap/tidb/releases/tag/v3.0.8

优秀的个人博客,低调大师

数据库中间件分片算法之hash

前言 夜深人静的时候,打开云音乐,点上一曲攀登,带上真无线蓝牙耳机,瞬间燃到爆,键盘打字如飞倦意全无。 分片规则 这几天有人问我,dble和MyCat到底有什么不同。其实dble作为MyCAT的同门,吸收了MyCat的精华,同时也相应的做了一些减法。只支持MySQL显得更加的纯粹。所以选择对比学习两者我觉得挺好。 前面我们学习了schema.xml文件的配置,我们能独立的把逻辑库和逻辑表搭建起来,让数据表跟随我们的定义规则(取模)进行分布。今天我们介绍具体的分片算法。dble相对于mycat来说,是做了一些减法的。比如一致hash算法就没有,而是使用了jumpstringhash代替了一致性hash。具体原因可以参考文章dble 沿用 jumpstringhash,移除 Mycat 一致性 hash 原因 hash分区算法 stringhash分区算法 enum分区算法 numberrange分区算法 patternrange分区算法 date分区算法 jumpstringhash算法 HASH分区算法 Hash分区算法是一种比较典型而且常用的算法。要使用HASH分区算法需要在rule.xml中定义两个部分。 分区规则定义 如下所示,使用tableRule标签定义,name对应的是规则的名字,而rule标签中的columns则对应的分片字段,这个字段必须和表中的字段一致。algorithm则代表了执行分片函数的名字。 <tableRule name="auto-sharding-long"> <rule> <columns>id</columns> <algorithm>rang-long</algorithm> </rule> </tableRule> 分区算法定义 如下所示,使用function标签定义分区算法,name代表算法的名字,算法的名字要和上面的tableRule中的标签相对应。class:指定分区算法实现类。property指定了对应分区算法的参数。不同的算法参数不同。 <function name="rang-long" class="com.actiontech.dble.route.function.AutoPartitionByLong"> <property name="mapFile">auto-sharding-long.txt</property> ... </function> partitionCount:指定分区的区间数,具体为 C1 +C2 + ... + Cn partitionLength:指定各区间长度,具体区间划分为 [0, L1), [L1, 2L1), ..., [(C1-1)L1, C1L1), [C1L1, C1L1+L2), [C1L1+L2, C1L1+2L2), ... 其中,每一个区间对应一个数据节点。 测试Hash分区算法 1.在启动的时候,两个数组点乘做运算,得到取模数。 2.两个数组进行叉乘,得出物理分区表。 3.根据where条件的值来落入实际分片 select * from shareding_key = 999; 先根据分片键取出999,按照公式1的计算结果除取模,然后得到的值落到2计算出来的分片中。 4.举个简单的例子: <property name="partitionCount">2,3</property> <property name="partitionLength">100,50</property> 根据公式1 也就是传进来的值需要对350取模。 根据公式2,物理分区为 999对350取模,正好是299。落在250-300这个区间里面。也就是第4个区间。 接下来我们实际来测试一下,我们在rule.xml中设置如下: <tableRule name="rule_hash"> <rule> <columns>id</columns> <algorithm>func_hash_test</algorithm> </rule> </tableRule> <function name="func_hash_test" class="Hash"> <property name="partitionCount">2,3</property> <property name="partitionLength">100,50</property> </function> 我们通过公式2算出有5个分片。所以在schema.xml中设置table属性如下: <table name="hash_test" primaryKey="id" rule="rule_hash" dataNode="dn1,dn2,dn3,dn4,dn5"/> 5.创建表测试 我们先使用shell创建1000行数据,在创建表,通过load data语法将我们shell产生的文件进行导入。 for i in {1..1000} do echo $i'|name'$[i]'' >>a1.txt done 请原谅我作为一个GEEK,把桌面和终端完美结合成二次元是标配。 这里可以看到我们查询999这个数据,会自动到dn4这个分片上进行查询。再比如我们查500,500对350取模是150,150是落在第二个分区里面的。 6.另一个例子 <property name="partitionCount">2</property> <property name="partitionLength">1000</property> 此时C _L=2_1000=2000,将对2000进行取模。 同时将划分如下的分区: 注意事项 M不能大于2880。2880的原因是这样的:2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 30, 32, 36, 40, 45, 48, 60, 64, 72, 80, 90, 96, 120, 144, 160, 180, 192, 240, 288, 320, 360, 480, 576, 720, 960, 1440是2880的约数,这样预分片扩容方便。 N必须要等于schema.xml中使用该分区算法的逻辑表的dataNode属性指定的DataNode数量之和,比如我们上面这个算法是5个分区,但是如果你在逻辑表的dataNode属性中设置分区个数小于5,dataNode="dn1,dn2,dn3,dn4",则dble就会报错。partition size : 5 > table datanode size : 4 please make sure table datanode size = function partition size $C\_n$和$L\_n$的个数必须相等。 分区字段必须为整型字段,如果是其他类型,要求值可转化为数字。 当partitionLength为1时,hash分区算法退化为求模算法,M及N均为partitionCount的值。 NULL作为分片列的值的时候数据的结果恒落在0号节点(第一个节点上),建议最好不要让这种情况出现,强制设置分片键为not null。 后记 今天学习了分片算法Hash。后续将继续分享其他的算法。谢谢支持!

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册