开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2800人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,开8群300+ 9群)
数据库的连接保持功能,一般来说在不少现代数据库的POC中,连接保持是一个POC核心的一部分,他强调在数据库无法工作或切换的情况下,多长时间数据库可以保持应用的链接。
想象一下你正在使用一个非常可靠的在线服务。为了保证这个服务一直可用,即使服务器出了问题,它也有一个“替补队员”(备节点)随时准备接班。当“主力队员”(主节点)因为计划内的维护(比如升级)或者意外故障倒下时,“替补队员”会迅速顶上,保证服务不中断。
通常解决这个问题的方法是让你的应用自动重新连接。可有些应用在最初设计的时候可能没有考虑到这种情况,所以一旦断掉就会出很多意想不到的错误,甚至直接崩溃。
为了解决这个问题,新型数据库现在增加了一个“连接保持”的新功能。这个功能就像给你的应用和数据库之间加了一层“保护罩”,即使数据库的主力队员和替补队员切换,你的应用也不会感觉到连接断开,这样就能避免因为数据库的切换操作或者一些意外故障导致你的应用出现短暂不可用的问题,让数据库服务更加稳定可靠。
这里我们画两幅图,来说明一下,没有保持链接和有保持连接之间的区别


一般来说如下的情况是无法提供保持连接的
1 当连接切换时,连接(会话)上存在临时表。
2 当连接切换时,Proxy正在从数据库接收结果报文但只接收了部分结果报文,比如执行SELECT语句后,需要从数据库接收一个包含100 MB数据的结果报文,但切换时数据库只传输了10 MB数据。
3 当连接切换时,连接(会话)上有正在执行中的事务(如begin;insert into;)。
4 使用cursor或者stmt_send_long_data,并且在切换时cursor或long_data还没有结束,那么在游标处理的过程中的数据状态无法保持。
(注解:数据库处理数据的方式有两种 1 将数据全部塞入到内存中,然后统一处理 2 将数据通过游标的方式,处理一行塞入到内存一行)

那么现代的数据库为什么要带代理的原因我们也捋一捋
1 新型数据库提供更高的功能尤其提供读写分离的功能,必须带有代理,代理提供了读写分离,行列访问分离,均衡负载访问,以及数据一致性等多种功能。
2 负载均衡,基于连接数负载均衡和基于活跃链接请求复杂均衡,支持从库读失败后重路由到主库。
3 支持事务拆分功能,在读写节点都存在的情况下,可以对事务本身进行拆解,将DML在写库执行,将QUERY语句在读库执行,同时还可以选择根据事务中第一个语句的状态来判断是否将事务全部发送给写库等。
4 可以处理比本身数据库可以承受连接数更多的连接打到代理中并入队列一样去消费这些连接
5 支持入创建临时表,prepare语句,用户变量,大报文,锁表,存储过程调用,函数调用等不在把连接在分配给其他的数据库用户使用
6 支持事务和Session级别的连接池形式,同时提供过载保护的功能,探测整体数据库的系统负荷超过后,在代理中将对访问进行控制,限流等功能,尽量保证数据库在不升级配置的情况下,可以不被过载压垮。(仅限读事务)
7 数据库代理本身的高可用转移能力,代理本身应该支持高可用部署,并自带检测机制进行主节点故障后的切换。
8 支持只能SQL重写功能以及SQL限流与SQL优化功能
9 SQL过滤与简单的SQL审计功能以及特定SQL探查告警记录功能
10 数据代理还应该具有数据库的缓存功能,在判断多长时间之内,对已经产生的SQL结果进行重用的功能。
11 提供SQL测试执行,针对一些测试请求可以将接受到的SQL直接抛弃,形成假执行的功能
12 数据脱敏于敏感数据显示特性字符功能,在有些数据库中的代理支持对于一些设定好的表的特定字段不进行显示或显示未XXXX 等特殊字符,如电话号码,身份证号码等。
13 其他:在一些数据库中基于特殊的功能如分布式或云原生,数据库数据库代理还有更多的功能,如auto scaling自动扩展路由,或者serverless 扩展节点后的自动路由添加和分发访问等功能,以及判断数据路由访问基于costing的模式就近访问等
置顶
和架构师沟通那种“一坨”的系统,推荐只能是OceanBase,Why ?跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)
跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)
跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
POLARDB 添加字段 “卡” 住---这锅Polar不背
PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火
PostgreSQL 无服务 Neon and Aurora 新技术下的新经济模式 (翻译)
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始
PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
MySQL相关文章
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法
MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用
MongoDB 大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模





