› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
love
V2EX  ›  MySQL

数据库要实现一个固定大小的用户消息队列要怎做?(术语似乎是叫环形队列

  •  1
     
  •   love · Feb 5, 2021 · 1951 views
    This topic created in 2091 days ago, the information mentioned may be changed or developed.

    比如有 10 万用户,每个用户每天要收 1000 消息到自己的队列,但只要保存最近 10000 条记录即可。

    类似表:

    userlog:
      id: int auto_increment
      user_id: int
      msg: varchar(100)
      time: datetime
    

    感觉每天循环处理每个用户然后批量删除 10000 条后的记录性能不太好的样式:

    DELETE FROM `userlog` 
    WHERE id IN (select id  FROM `userlog`  ORDER BY id DESC LIMIT 10000, 250))
    

    因为本身 mysql limit 语句要大偏移定位 10000 条记录后的记录就性能不好再加上还要每天给 10w 用户分别查询多次来删除。

    似乎没有好的办法啊?或者有不用 mysql 数据库的办法吗?

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3409 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:30 · PVG 18:30 · LAX 03:30 · JFK 06:30
    ♥ Do have faith in what you're doing.