首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

别人读没读你的消息,你如何知道?

2、已读未读人数,只有发送者查看这条消息的时候才关心。发送者如果在App上做别的事情,根本不需要关心当前有多少人已读。因此直接推送已读确认也不合适。 如果变为客户端查看的时候主动拉取呢?...主动拉取同样存在一些挑战 1、主动拉取如果拉取时间间隔过大,已读未读人数更新不及时 2、时间间隔太小,消耗流量、电量 IM系统的特点是推拉结合,采用推拉结合的方案会不会更好呢?...我们注意到这类消息用户实际使用场景,用户只在需要查看这条消息已读情况的较短时间内关心已读未读数量。 因此设置一个合理的主动拉取策略就可以比较好的解决这个问题,整个流程如下图。 ?...服务端进行未读人数计算,并缓存 2、User1在查看回执消息时,主动拉取已读人数或未读人数 主动拉取策略怎么设置呢? 用户查看回执消息时,20秒之内,每2秒拉取一次;如果用户退出会话则停止拉取。...如果用户长时间停留在这条回执消息,拉取未读人数的频率会随着时间衰减,不会造成流量和电量的浪费。 这个策略在功能、性能、实现复杂度之间求得一个较好的平衡!

1.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【MySQL】MySQL事务的问题:脏读、幻读、不可重复读

    MySQL事务的问题:脏读、幻读、不可重复读 在上一篇文章中,我们已经学习过了事务相关的基础知识,今天,我们继续学习事务有可能带来的一些问题。...-- my.cnf [server] transaction-isolation = READ-UNCOMMITTED 脏读 脏读的意思就是两个事务同时在运行,其中 A 事务修改了某个字段,B 事务读取了这个字段...很明显,这就产生了问题,这个就是脏读带来的结果,一致性出现了问题。 不可重复读 不可重复读是啥意思呢?...; +----------+ | username | +----------+ | aaa | +----------+ 1 row in set (0.00 sec) 幻读 最后一个幻读...确实,它们非常类似,但是,幻读更强调的是聚合操作结果,而不是单一一条数据的修改,这就是它们两个之间最本质的区别。

    20810

    直连别人的数据库,靠谱吗

    话题来源于和某同学的交流,他说自己的系统A需要调用B系统中的数据,然后开发给的方案是直接连接B系统的数据库。我也不知道是哪位高人想出的方案,以为只是临时的方案。结果他和我说,他们线上也是这么做的。...原来在一个系统之间可以完成的业务流程,通过多系统之间多次交互来实现。如果是上下游依赖的数据,直连其他业务的数据库,会有什么不妥的地方呢?...如果通知了,己方还要被动升级,也是很麻烦的,造成了强依赖。 数据库的性能问题:原则上,自己的数据库只有本方应用可以调用。...这样可以很方清晰地控制调用频率,但是现在数据库有第三方在调用,而我们又无法从系统上控制别人的使用频率,如果对方调用的频率太高,引发数据库连接数不够用,会影响到自身的业务。...同时,还可能造成数据库锁表的问题,当你发现有锁表现象出现,然后根据SQL的ID在己方的系统中又查不到相关记录,是不是会很崩溃?

    75830

    MySQL的脏读、幻读、不可重复度是什么

    什么是脏读脏读又称为无效数据读取,指在数据库访问中,事务T1修改了某个数值,随后事务T2读取了该数值,而后因某种原因,T1撤销了对该数值的修改,导致T2读取到的数据变为无效。...具体而言,脏读是指一个事务正在访问数据并对其进行修改,但这些修改尚未提交到数据库中。此时,另一个事务也访问该数据,并使用了它。...随后,操作第一个事务的用户发现表中仍然存在未修改的数据行,就好像出现了幻觉一般。一般解决幻读的方法是通过增加范围锁(RangeS),将检测锁的范围限定为只读,这样便可以避免幻读的发生。...值得注意的是,幻读是不可重复读的一种特殊情况:在事务没有获取范围锁的情况下执行SELECT … WHERE操作时可能会导致幻读现象的发生。...什么是不可重复读不可重复读是指在数据库访问中,一个事务内进行两次相同的查询却返回了不同的数据。这种现象是由于系统中其他事务的提交修改所引起的。

    11310

    直连别人的数据库,靠谱吗

    话题来源于和某同学的交流,他说自己的系统A需要调用B系统中的数据,然后开发给的方案是直接连接B系统的数据库。我也不知道是哪位高人想出的方案,以为只是临时的方案。结果他和我说,他们线上也是这么做的。...原来在一个系统之间可以完成的业务流程,通过多系统之间多次交互来实现。如果是上下游依赖的数据,直连其他业务的数据库,会有什么不妥的地方呢?...如果通知了,己方还要被动升级,也是很麻烦的,造成了强依赖。 数据库的性能问题:原则上,自己的数据库只有本方应用可以调用。...这样可以很方清晰地控制调用频率,但是现在数据库有第三方在调用,而我们又无法从系统上控制别人的使用频率,如果对方调用的频率太高,引发数据库连接数不够用,会影响到自身的业务。...同时,还可能造成数据库锁表的问题,当你发现有锁表现象出现,然后根据SQL的ID在己方的系统中又查不到相关记录,是不是会很崩溃?

    1.1K10

    ✅MySQL的脏读、幻读、不可重复度是什么

    什么是脏读脏读又称为无效数据读取,指在数据库访问中,事务T1修改了某个数值,随后事务T2读取了该数值,而后因某种原因,T1撤销了对该数值的修改,导致T2读取到的数据变为无效。...具体而言,脏读是指一个事务正在访问数据并对其进行修改,但这些修改尚未提交到数据库中。此时,另一个事务也访问该数据,并使用了它。...随后,操作第一个事务的用户发现表中仍然存在未修改的数据行,就好像出现了幻觉一般。一般解决幻读的方法是通过增加范围锁(RangeS),将检测锁的范围限定为只读,这样便可以避免幻读的发生。...值得注意的是,幻读是不可重复读的一种特殊情况:在事务没有获取范围锁的情况下执行SELECT … WHERE操作时可能会导致幻读现象的发生。...什么是不可重复读不可重复读是指在数据库访问中,一个事务内进行两次相同的查询却返回了不同的数据。这种现象是由于系统中其他事务的提交修改所引起的。

    57210

    python 爬取租房信息存储至mysql数据库

    利用python requests库获取网页信息; 利用bs库解析网页内容; pymysql用于操作mysql数据库; 将获取的信息存储至mysql数据库。 效果如图: ?...1.导入需要的库,并建立数据库连接。需要先安装好mysql数据库在本机上。...将没有的信息给定为‘no info’. 4.每获取一条信息,将该信息存储至mysql数据库;用insert into将信息插入到数据库; conn.execute("insert into roominfo...------------------------------------------------ 8.附加:本地mysql数据库操作,以上面写入的数据数据为例。...1.将安装好的mysql添加至path环境变量里; 2.windows+R输入cmd进入命令行,输入mysql;输入密码; 3.connect Ganjizufang; use Ganjizufang;

    1.8K30

    MYSQL事件隔离级别以及复读,幻读,脏读的理解

    一.mysql事件隔离级别 1未提交读(READUNCOMMITTED) 另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)( 隔离级别最低,并发性能高 ) 2.....提交读(READCOMMITTED) 本事务读取到的是最新的数据(其他事务提交后的)。...会出现不可重复读、幻读问题(锁定正在读取的行) 3.可重复读(REPEATABLEREAD) 在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同样的SELECT操作读到的结果会是一致的...会出幻读(锁定所读取的所有行) 4.串行化(SERIALIZABLE) 读操作会隐式获取共享锁,可以保证不同事务间的互斥(锁表) 二.脏读、不可重复读、幻读、复读 1.脏读 当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据...2.不可重复读 当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改成功的数据,导致两次读取到的数据不匹配,也就照应了不可重复读的语义 3.幻读 当前事务读第一次取到的数据比后来读取到数据条目少或者增加

    72910

    荐读 | 大数据告诉你别人家的中秋节都是这么过的

    今天请跟随数据君的脚步,从大数据的角度,来看下中秋放假、送礼、安排的这些事儿。 互联网上的中秋节 每1.5秒,就会出现一条关于中秋节的内容或搜索轨迹。全网搜索量整体环比去年增长了54%。 ?...南方的小朋友对于中秋过节更为积极。 中秋热搜问题榜 ? 搜索关键词“中秋”“回家”,可以清晰的在图表上看到,大家最关心的问题是中秋节的放假安排和中秋应该如何送礼。 中秋节送礼送点啥?...中国人过节送点礼已经是几千年的习俗,端午的粽子,中秋的月饼,也早已既定成俗。那么除了月饼,还有那些产品深受消费者青睐呢? ?...数据显示月饼仍让是大家中秋送礼的首要选择,占据了48%,而茶叶类的产品占据了中秋送礼前3甲。 高达17%消费者选择了茶叶,这也意味着越来越多的消费主力军,倾向于更有品质感的生活方式。...亲爱的朋友,你的中秋是怎么过的呢? 内容来源:中云微迅

    79580

    mysql取分组后最新的一条数据_mysql分组后取最大时间

    大家好,又见面了,我是你们的朋友全栈君。 mysql取分组后最新的一条记录,下面两种方法. 一种是先筛选 出最大和最新的时间,在连表查询....一种是先排序,然后在次分组查询(默认第一条),就是最新的一条数据了(此条错误,分组mysql官方文档说明 是随机选择分组的一条,所以这么操作是不确定的),一般时间和主键id是正向关系,比如id大的插入时间就会比较大...t_assistant_article where id in(select max(id) from t_assistant_article GROUP BY base_id) 下面是测试sql, 感谢评论区的留言...,2013年写的,今天登录了网站发现了这个问题,抱歉!...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    11.1K101

    你的MySQL为什么会有幻读问题?

    session B的修改结果,被session A之后的select语句用“当前读”看到,不能称为幻读。幻读仅专指新插入的行。 这三查询都加了for update,都是当前读。...即使把所有记录都加锁,还是阻止不了新插入的记录,这也是为什么“幻读”会被单独拿出来解决。 InnoDB解决幻读 幻读的原因 行锁只能锁行,但是新插入记录这个动作,要更新的是记录之间的“间隙”。...当执行 select * from t where d=5 for update时,就不止是给数据库中已有的6个记录加上了行锁,还同时加了7个间隙锁。这样就确保了无法再插入新记录。...如果读提交隔离级别够用,即业务无需保证可重复读,考虑到读提交下操作数据的锁范围更小(无间隙锁),这个选择就是合适的。...如果大家都用读提交,可是逻辑备份时,mysqldump为什么要把备份线程设置成可重复读? 然后,在备份期间,备份线程用的是可重复读,而业务线程用的是读提交。

    38010

    MySQL中的幻读,你真的理解吗?

    昨天接到阿里的电话面试,对方问了一个在MySQL当中,什么是幻读。当时一脸懵逼,凭着印象和对方胡扯了几句。面试结束后,赶紧去查资料,才发现之前对幻读的理解完全错误。下面,我们就聊聊幻读。...要说幻读,就要从MySQL的隔离级别说起。MySQL的4钟隔离级别分别是: Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。...这就是脏读。 Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。...Repeatable Read(可重读) 这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。...简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。 上面这一段是MySQL官方给出的解释,听着云里雾里。

    60730

    MySQL中的幻读,你真的理解吗?

    昨天接到阿里的电话面试,对方问了一个在MySQL当中,什么是幻读。当时一脸懵逼,凭着印象和对方胡扯了几句。面试结束后,赶紧去查资料,才发现之前对幻读的理解完全错误。下面,我们就聊聊幻读。...要说幻读,就要从MySQL的隔离级别说起。MySQL的4钟隔离级别分别是: Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。...这就是脏读。 Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。...Repeatable Read(可重读) 这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。...简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。 上面这一段是MySQL官方给出的解释,听着云里雾里。

    8.8K74

    (10) 如何MySQL读压力大的问题

    创建lvs用于监控后端数据库所使用的数据库账号 [root@Node1 keepalived]# mysql -uroot -p mysql> grant all privileges on *.*...对于延迟敏感的业务无法自动在主库执行 使用MaxScale解决读压力大的问题 MaxScale介绍 支持高可用,负载均衡,良好扩展的插件式数据库中间层软件 MaxScale允许用户开发和定制适合自己的插件...路由插件 ReadConnRoute 用来解决多台读服务器的负载均衡 ReadWriteSplit 用来实现读写分离 4....为路由模块创建mysql账号 用来读取mysql系统库下的表,获取后端数据库的权限 mysql> create user scaleroute@'192.168.3.%' identified by '...对数据库密码进行加密 因为maxScale的配置文件是一个文本格式的明文文件,在文件中直接书写mysql密码是不安全的 maxScale提供了加密mysql密码的命令,这个命令是在maxScale节点中运行

    82320

    MySQL 到底是怎么解决幻读的?

    而多出来或者少的哪一行被叫做幻行。 二、为什么要解决幻读 在高并发数据库系统中,需要保证事务与事务之间的隔离性,还有事务本身的一致性。...多版本并发控制(MVCC)(快照读/一致性读) 多数数据库都实现了多版本并发控制,并且都是靠保存数据快照来实现的。以 InnoDB 为例,每一行中都冗余了两个字断。...事务每次取数据的时候都会取创建版本小于当前事务版本的数据,以及过期版本大于当前版本的数据。 普通的 select 就是快照读。...如果这样理解的话,Mysql的RR级别确实防不住幻读 有道友回复 地址: 在快照读读情况下,mysql通过mvcc来避免幻读。 在当前读读情况下,mysql通过next-key来避免幻读。...所以我认为mysql的rr级别是解决了幻读的。 先说结论,MySQL 存储引擎 InnoDB 隔离级别 RR 解决了幻读问题。面试问烂的 MySQL 四种隔离级别,这篇文章建议大家看下。

    3.8K20

    MySQL中的InnoDB是怎么解决幻读的?

    结论 首先说结论,在RR的隔离级别下,Innodb使用MVCC和next-key locks解决幻读,MVCC解决的是普通读(快照读)的幻读,next-key locks解决的是当前读情况下的幻读。...幻读和不可重复读的区别是,前者是一个范围,后者是本身 3. 怎么解决的? 3.1. 当前读 所谓当前读,指的是加锁的select(S或者X), update, delete等语句。...在RR的事务隔离级别下,数据库会使用next-key locks来锁住本条记录以及索引区间。...普通读 因为普通读是不会加锁的读,故不会有next-key locks的使用,解决幻读的手段是MVCC MVCC会给每行元组加一些辅助字段,记录创建版本号和删除版本号。...这意味着删除操作在这个事务之后发生 就拿上面那个例子说明 当前数据库的状态 ?

    1.9K21

    mysql的事务隔离和幻读和死锁问题

    1.系统要通过严格的ACID测试,ACID表示原子性/一致性/隔离性/持久性 原子性:一个事务必须被视为一个不可分割的最小工作单元 一致性:数据库总是从一个一致性的状态转换到另外一个一致性的状态 隔离性...:通常来说一个事务所做的修改在最终提交以前对其他事务是不可见的 持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中 2.sql标准中定义了四种隔离,较低级别的隔离可以执行更高的并发,开销也更低...READ UNCOMMITTED 未提交读,事务中的修改还没提交,其他事务就可以看到,这也是脏读,一般不会用 READ COMMITED 提交读,大多数的默认级别,在提交之前,所做的任何修改对其他事务都是不可见的...REPEATABLE READ 可重复读,解决了脏读的问题,保证了同一个事务中多次读取同一个记录结果一致,但是还是会有幻读问题 SERIALIZABLE 可串行化,避免幻读问题,每一行都加锁 3.事务的隔离级别下的问题...6.mysql 死锁: 1.两个或多个事务在同一个资源上相互占用,并请求锁定对方占用的资源,导致恶性循环 2.解决这种问题,检测到死锁的循环依赖,立即返回一个错误 3.时间达到了锁等待超时限定,放弃锁请求

    64020

    MySQL读锁的区别和应用场景分析

    读锁的概念和区别 如果在MySQL的事务里查询数据,然后在同一事务中插入或更新相关数据,常规的SELECT语句不能提供足够的保护。其他并行的事务可以更新或删除第一个事务里刚查询的相同行。...通过对比,发现FOR UPDATE的加锁方式类似并发编程里的写锁,而LOCK IN SHARE MODE则是读锁,同一时间点相同的行上只允许出现一个写锁,或者是多个读锁。...LOCK IN SHARE MODE的应用场景适合于两张表存在关系时的写操作,拿MySQL官方文档的例子来说,假如存在两张有关系的表:PARENT和CHILD,使用普通的SELECT语句(快照读)来查询表...,我们可以得出两种读锁的适用场景。...FOR UPDATE 是独占锁,事务用FOR UPDATE锁定行后,会阻塞其他事务对该行的写锁和读锁的获取,反之亦然。 任何行锁都不影响普通SELECT查询的快照读,保证了MySQL的并发能力。

    2.5K41
    领券