`

mysql模拟队列

阅读更多
-- 初始化数据
DROP TABLE IF EXISTS t_msg_queues;
CREATE TABLE t_msg_queues(
	msg_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
	msg_content VARCHAR(255) NOT NULL,
	owner_thread_id INT NOT NULL DEFAULT -1,
	PRIMARY KEY (msg_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
SET @maxRandom = POWER(10,6);
INSERT INTO `t_msg_queues`(`msg_content`) 
VALUES (CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))
	,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))
	,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))
	,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))
	,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))
	,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)));
	

-- 获取1条未处理的消息
SET SESSION autocommit=1;
SET @msgID = -1;
UPDATE t_msg_queues SET owner_thread_id=GREATEST(CONNECTION_ID() ,(@msgID:=msg_id)*0)
WHERE owner_thread_id=-1 ORDER BY msg_id LIMIT 1;
-- 此时@msgID如果为-1,代表没有待处理的消息,否则就代表本次需要处理的msg_id

分享到:
评论

相关推荐

    mysql 队列 实现并发读

    然而,MySQL本身并不直接提供原生的并发队列服务,但可以通过一系列SQL语句来模拟实现。 一种常见的方法是结合`SELECT`和`UPDATE`语句来实现并发安全的队列操作。首先,我们尝试更新满足特定条件(如状态为'C')的...

    PHP+MySQL实现消息队列的方法分析

    当面对需要高效、稳定地发送大量短信的服务时,利用PHP和MySQL构建一个消息队列系统是解决这一问题的有效方式。本文将从以下几个方面详细介绍PHP+MySQL实现消息队列的方法和相关技巧。 一、消息队列的概念 消息队列...

    针对java、mysql、redis、消息队列开发的一款面经、题型的应试网站

    【标题】中的“针对java、mysql、redis、消息队列开发的一款面经、题型的应试网站”表明这是一个专为准备Java、MySQL、Redis和消息队列面试者设计的在线学习平台。这个网站可能包含了各种面试问题、实战练习以及相关...

    Thinkphp6 redis队列 消息事件 gatewayworker聊天打通版

    `Redis`的`list`数据结构可以很好地模拟消息队列,通过`rpush`和`lpop`命令,可以将消息推入队列并在另一端取出,保证了消息的顺序处理。 接下来,`GatewayWorker`是一个专为实时通信设计的长连接服务框架,它支持...

    Spotlight_on_mysql

    这些指标可以帮助我们评估数据库的健康状况,尤其是在模拟大量并发用户时。 2. **性能指标** - **查询性能**:通过分析慢查询日志,可以找出执行时间过长的SQL语句,对其进行优化,减少不必要的资源消耗。 - **...

    高级MySQL性能优化

    1. 性能/基准测试理论:首先对性能和基准测试有一个基本的理论框架,介绍性能测试的基本概念和重要性,以及如何设计有效的基准测试来模拟生产环境中的工作负载。 2. 应用架构问题:讨论应用程序架构如何影响数据库...

    消息队列测试报告及JMeter压测说明1

    本次测试的主要目标是评估自研消息队列引擎Flash-MQ的性能指标,包括消息丢失率、消息重复率以及吞吐性能,并通过压力测试工具JMeter来模拟高并发场景下的系统表现。 #### 二、测试环境与配置 **测试硬件:** 使用...

    MySQL数据库设计、优化

    5. **写操作优化**:通过队列方式合并多个写操作,实现持续写入,避免短时间内对数据库造成过大的压力。 6. **大数据字段处理**:对于超长TEXT/BLOB字段,建议进行垂直拆分并进行压缩处理。 7. **数据分片**:将冷热...

    整合canal监听mysql

    `Canal` 通过模拟 MySQL 客户端连接到数据库服务器,订阅并解析 binlog 事件,然后将这些事件以消息的形式传递给消费者。这使得我们可以实时地获取到数据库中的插入、更新和删除操作。 **1. Main 直接连接 MySQL ...

    银行叫号模拟系统

    3. 数据库技术:如MySQL、Oracle或SQL Server等用于存储和管理叫号记录、队列信息等数据。 4. 通信协议:TCP/IP协议进行服务器与客户端之间的数据传输,保证信息的准确无误。 四、安全与稳定性 银行叫号模拟系统...

    基于Python+Django+Redis+Mysql的B2C生鲜商城源码+项目说明+项目截图.zip

    任务队列:celery框架 静态资源存储:FastDFS 商品搜索:基于haystack来使用whoosh Web服务器:Nginx+uwsgi 模拟了大型电商企业高访问量的负载均衡 本地运行项目 建议创建一个虚拟环境来运行 python manage.py ...

    基于Android的护士学习与模拟考试系统_移动端设计_后台管理_MySQL数据库设计.zip

    该压缩包文件“基于Android的护士学习与模拟考试系统_移动端设计_后台管理_MySQL数据库设计.zip”涉及了多个IT领域的关键知识点,主要包括以下几个方面: 1. **Android开发**:Android是Google开发的一种开源移动...

    2013Oracle技术嘉年:MYSQL并发控制

    MySQL 5.6版本中引入了一个重要的改进——读写事务双队列机制。这一改进通过将读写事务分离为不同的队列,显著减少了读写操作之间的相互干扰,从而提高了并发处理能力。 **3.3 读事务优化与索引全局锁去除(MySQL ...

    MySQL压力测试报告模版

    - **CPU负载**: 通过`top`命令获取的1分钟内的平均值,反映任务队列的平均长度。 **4.2 测试过程** - 使用Sysbench工具进行压力测试。Sysbench是一种开源的压力测试工具,可以模拟多种类型的数据库操作。 - **命令...

    spring+jotm+ibatis+mysql实现JTA分布式事务

    它允许应用程序在不同的资源管理器(如数据库、消息队列等)之间协调事务,确保ACID(原子性、一致性、隔离性和持久性)特性。在本项目中,JOTM作为Spring的事务管理后端,负责处理分布式事务的提交和回滚。 接着,...

    Java 高仿QQ聊天即时通软件+mysql数据库 完整运行!!

    Java高仿QQ聊天即时通软件是一款基于Java编程语言开发的通信应用,旨在模拟QQ聊天功能,提供实时的信息交流服务。这个软件项目包含了完整的运行环境,包括后端服务器处理、前端用户界面以及数据库存储,所有这些组件...

    银行业务模拟

    数据库设计是核心,可能涉及关系型数据库(如MySQL)或非关系型数据库(如MongoDB),用于存储客户信息、账户余额、交易历史等数据。 3. **编程语言选择**:项目标签提到“代码”,但未指定具体语言。常见的选择有...

    模拟qq源码(java 版)

    这可能涉及到数据结构如队列、栈或者图的使用,用于存储和检索用户信息、在线状态以及聊天记录。数据库操作可能也被用来持久化这些数据,例如MySQL或MongoDB等数据库可能被集成到项目中。 此外,消息的加密和安全也...

    交通模拟查询

    3. **数据库管理**:MySQL、SQLite等数据库系统存储大量交通数据,支持高效的增删改查操作。 4. **API接口**:如果项目需要实时更新交通信息,可能需要对接第三方交通数据API,获取最新的列车时刻表、航班信息等。 ...

    108、AMQP消息队列-RabbitMQ1

    4. Docker Compose配置:在`docker-compose.yaml`文件中,配置了两个服务,一个是`database`(MySQL),另一个是`rabbitmq`。`rabbitmq`服务映射了两个端口,5672用于AMQP通信,15672用于Web管理界面。 5. Symfony...

Global site tag (gtag.js) - Google Analytics