平面文件与数据库 - 速度?

2023-11-26

我正在制作一个聊天程序,我需要一个地方来存储消息。客户端将每隔 x 秒与服务器联系一次最后收到的消息 id,服务器将在客户端加入的房间中查找 id 高于该 id 的所有消息。

由于我不会永远存储内容,因此我正在考虑使用仅包含最后 40 条左右消息的平面文件(每个房间一个,以及直接消息)。不过我认为通过比较数字数据库会更快。

我应该使用什么数据存储方法?


平面文件可能会快一点,但从长远来看,它最终会出现更多错误,因为而不是仅仅执行SELECT * FROM messages WHERE room=nnn AND ID > yyy,您必须加载该文件,解析它,扫描每一行以查找消息 ID,转到正确的消息,然后将其读出。

这只是第一个问题。文本文件不支持多个用户写入(如果两个人同时在同一个房间发帖怎么办?),并且很容易被损坏。

考虑到所有因素,我认为使用数据库更好,即使它是像 SQLite 这样简单的东西,它具有出色的 PHP 支持。然而,考虑到多用户的情况,MySQL 可能是一个更好的选择。此外,MySQL 具有出色的缓存功能,因此大多数时候,最新数据将直接来自 RAM,并且无论以哪种方式,都比在 PHP 中扫描文本文件更快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

平面文件与数据库 - 速度? 的相关文章

  • 在 php 和 mysql 中使用 utf8mb4

    我读过 mysql gt 5 5 3 完全支持每个可能的字符 如果您使用编码utf8mb4对于某个表 列http mathiasbynens be notes mysql utf8mb4 http mathiasbynens be note
  • 复杂的sql树行

    表结构 id message reply id 1 help me 0 434 love to 1 852 didn t work 434 0110 try this 852 2200 this wont 0 5465 done 0110
  • 删除、截断或删除以清理 MySQL 中的表

    我正在尝试清理表格 但没有摆脱表格的实际结构 我有一个id自动递增的列 我不需要保留ID号 但我确实需要它来保持其自动递增的特性 我发现了删除和截断 但我担心其中之一会完全删除整个表 从而使未来的插入命令变得无用 如何从表中删除所有记录以便
  • 为什么使用闭包进行赋值而不是直接将值赋给键?

    我当时正在看在 7 10 他添加了一个数据库依赖项并使用闭包来分配值 我的问题是为什么不直接使用直接赋值 我的意思是不这样做 container db capsule 相当于这样做 container db function contain
  • 限制分页页数

    objConnect mysql connect localhost root or die mysql error objDB mysql select db Test strSQL SELECT FROM UserAddedRecord
  • 用PHP动态生成二维码[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的网站上生成二维码 他们所要做的就是在其中包含一个 URL 我网站上的变量将提供该 URL
  • mysql 详细查询字符串,如通配符

    不知道如何标题我的问题 哈哈 下面是我需要的 我的数据库中的值如下所示 test example 1 test example 2 test example TD 1 这些值的长度可以不同 test example 只是一个示例 某些值将具
  • Errno 121,写入或更新时出现重复密钥?

    SET OLD UNIQUE CHECKS UNIQUE CHECKS UNIQUE CHECKS 0 SET OLD FOREIGN KEY CHECKS FOREIGN KEY CHECKS FOREIGN KEY CHECKS 0 S
  • 使用php插入sql数据库时出错

    我有一个带有 MySQL 插入查询的程序 sql INSERT INTO people person id name username password email salt VALUES person id name username p
  • PHP别名@函数

    我是 PHP 新手 看到一些使用 前缀调用函数 如 mysql ping 的示例 我感到很困惑 它是做什么用的 谷歌搜索 搜索没有太大帮助 因为 被丢弃并且 别名 不是足够好的关键字 抑制错误 警告和通知 如果你用自定义的方式补充它 你可以
  • Laravel 类邮件程序不存在

    我将应用程序从 5 更新到 5 2 现在 当我调用 Mail send 时 它会返回一个异常 Class mailer 不存在 Mail send emails mail data gt content function m use to
  • 如何缓存 twitter api 结果?

    我想缓存 twitter api 结果的结果并将其显示给用户 缓存结果的最佳方法是什么 我正在考虑根据时间限制将结果写入文件 可以吗 还是应该使用任何其他方法 最重要的是 理想的缓存时间是多少 我想显示来自 twitter 的最新内容 但
  • PHP:展平数组-最快的方法? [复制]

    这个问题在这里已经有答案了 是否有任何快速方法可以在不运行 foreach 循环的情况下展平数组并选择子键 在本例中为 键 和 值 或者 foreach 始终是最快的方法 Array 0 gt Array key gt string val
  • 在 BIRT 中输入参数后更新数据集查询

    在 BIRT 报告设计中传递参数后 如何更改或更新数据集的查询 详细说明 我有一个如下所示的查询 WHERE 该参数标记可以保存不同的值 在用户输入参数后 它看起来像这样 例如 WHERE column name 1 or WHERE co
  • 连接 3 三张表

    我有这个图表应该可以解释我的情况 我需要一些关于连接 3 个表的帮助 我不知道如何做这种事情 因此 我可以通过执行以下操作来经历一段检索记录的 while 循环 img src alt Album AlbumID 使用内部联接 http w
  • PHP:如何检查总数。 URL 中的参数?

    我正在使用 REQUEST 检索参数 有没有办法找到总数 URL 中的参数 而不是检索每个参数然后进行计数 这将为您提供总数 分隔的 URL 查询参数 count explode SERVER QUERY STRING 如果您只想要唯一的参
  • 在 LINQ 中执行 FirstOrDefault 的替代方法

    我有一个成员资格表 用于记录用户是否是列表的成员 当用户的成员资格发生更新时 会写入新记录 并且先前的记录保持原样 从而可以维护其成员资格的历史记录 要获取用户的会员身份 需要选择他们最近的条目 下面是一些用户列表成员资格数据的示例 目的是
  • PHP 相当于朋友或内部

    php 中是否有相当于 朋友 或 内部 的东西 如果没有 是否有任何模式可以遵循来实现这种行为 Edit 抱歉 但标准 Php 不是我想要的 我正在寻找类似于马戏团长所做的事情 我有一些类在后端进行 C 风格的系统调用 并且杂耍已经开始变得
  • 有关于 PHP 中的 V8JS 的文档吗?

    有没有关于V8JS的文档 我是否只需要标准 PHP 或一些扩展即可使用 V8JS 我将非常感谢有关 PHP 中的 V8JS 的任何信息 要求 PHP 5 3 3 和 V8 库和标头安装在正确的路径中 Install http www php
  • 使用“AND”表达式构建动态 SQL,而不混淆嵌套条件?

    总的来说 我对 php 和编码相当陌生 我有一系列条件需要测试它们是否已设置 它们是 option1 option2 option3 if isset option1 if isset option2 if isset option3 qu

随机推荐

  • pysftp 库无法在 AWS lambda 层中工作

    我想使用将文件上传到 EC2 实例pysftp库 Python 脚本 所以我创建了一个小的Python脚本 它使用下面的行来连接 pysftp Connection host Constants MY HOST NAME username
  • 当我想要选择物品来尽可能填满容器时,它叫什么 - 我应该使用什么算法?

    我有一个问题如下 给定的物品类型重量为 w1 w2 w3 wn 每一项的 这些类型的数量是无限的 你有一个能够承载重量W的容器 找到具有最大权重总和的项目组合 将装入容器中且不超过最大重量 W 例如 我有三种类型的带有重量的物品 w 5 w
  • PHPMailer 无法连接到 SMTP 主机

    出现以下错误 SMTP gt 错误 无法连接到服务器 php network getaddresses getaddrinfo 失败 不知道这样的主机 0 SMTP 错误 无法连接到 SMTP 主机 发送此邮件时出现问题 这是我的配置文件设
  • 在控制台中禁用 Rails SQL 日志记录

    当我在控制台中执行命令时 有没有办法禁用 SQL 查询日志记录 理想情况下 如果我可以禁用它并使用控制台中的命令重新启用它 那就太好了 我正在尝试调试某些内容并使用 puts 打印出一些相关数据 然而 sql 查询输出使其难以阅读 Edit
  • 测试失败+异常的截图

    你们中有人知道对测试失败和异常进行屏幕截图的可能解决方案吗 我在中添加了以下代码TearDown 但结果它也会对通过的测试进行截图 所以这不是最好的解决方案 DateTime time DateTime Now string dateTod
  • 作为服务器进程读取 Excel 文件

    我正在尝试找到一种适当的方法来读取 NT 服务器操作系统上的 Excel 文件的内容 我在使用 Excel API 时遇到了很多问题 然后遇到了官方微软办公自动化其中指出 Excel API 不适合 Excel 自动化 我看到的问题与文章中
  • 防止 AngularJS 中的退格键导航回来

    我在 AngularJS Web 应用程序中遇到了这个问题 当用户进入需要填写表单的页面并开始输入时 如果他按退格键并且焦点不在输入文本上 则页面将转到之前的状态 我抬头这个解决方案使用 jQuery 但这似乎不是在 AngularJS 中
  • Eclipse 中的 Tomcat:它运行但在启动过程中超时

    我正在使用 Tomcat 7 在 Eclipse Helios 中运行 java web 应用程序 服务器成功启动 指示了持续时间 但是 Eclipse 的进度条仍然旋转 表示 Tomcat 正在启动 最终达到超时并抛出错误 我相信 Tom
  • C++:为什么 bool 是 8 位长?

    在 C 中 我想知道为什么 bool 类型是 8 位长 在我的系统上 而只有一位就足以保存布尔值 我曾经认为这是出于性能原因 但是在 32 位或 64 位机器上 寄存器为 32 或 64 位宽 性能优势是什么 或者这只是这些 历史 原因之一
  • 单击时更改锚点的颜色

    我希望当我单击此链接时 它的颜色会更改为给定的颜色 li a href Press a li CSS 声明 active将实现你所追求的 http www w3schools com CSS pr pseudo active asp Exa
  • 在 Django 管理更改/添加页面中显示外键数据

    我试图让一个模型的属性显示在另一个模型的 Django 管理更改 添加页面中 这是我的模型 class Download model Model task models ForeignKey Task class Task model Mo
  • 重现RabbitMQ网络分区场景

    我想重现网络分区场景具有所有三种模式 ignore autoheal and pause minority 我怎样才能实现这个目标 我尝试停止 sbin service restart 集群的节点之一 但这并没有导致任何网络分区 我还尝试删
  • 在 Android 中以编程方式打开 ServiceMode 菜单

    如何打开安卓服务模式在三星手机上以编程方式菜单 手动的话 我可以通过拨打ussd代码 0011 来完成 这是一个挑战 我花了几个小时寻找解决方案 但恐怕我没有好消息 1 第一次尝试 Intent ACTION DIAL 确实 一开始 可以直
  • R-更改数据框中列的编码?

    我正在尝试更改数据框中列的编码 stri enc mark data updated text 1 UTF 8 ASCII ASCII UTF 8 ASCII ASCII UTF 8 UTF 8 UTF 8 10 ASCII ASCII U
  • not() 和ends-with() 的Xpath 错误

    我有以下 Xpath 表达式 not input ends with Copyright 我希望它能够为我提供所有元素 输入除外 以及以 版权 结尾的任何属性值 我在 Selenium 2 Java API 中执行它webDriver fi
  • C++ 中 min 和 max 函数的使用

    从 C 来看 有std min and std max优于fmin and fmax 为了比较两个整数 它们提供基本相同的功能吗 您是否倾向于使用这些函数集中的一组 还是更喜欢编写自己的函数 也许是为了提高效率 可移植性 灵活性等 Note
  • ClassNotFoundException:net.sourceforge.jtds.jdbc.Driver

    我有连接到 MS SQL 数据库并获取一些数据的 java 代码 在运行代码之前 我在 Unix 服务器中设置了类路径 它以前工作得很好 但由于某种原因 几天前运行的同一个 jar 文件抛出了 Class not found 异常java
  • 不带 typedef 关键字的结构

    我目前正在学习有关structC 中的数据结构以及如何在该结构前加上typedef关键词 这会导致实际结构的变量名称被放置在不同的命名空间中 如几个不同参考文献中所述 C 中 struct 和 typedef struct 的区别 type
  • 如何使用 Cocoa 标记文件和文件夹

    我想用某种颜色 图像 标记文件和文件夹 如何才能实现这一目标 我尝试使用图标服务 它适用于文件 但不适用于文件夹 我看到这种行为有效Dropbox 10 4 10 5 和 10 6 如何做到这一点 博客文章Cocoa 教程 自定义文件夹图标
  • 平面文件与数据库 - 速度?

    我正在制作一个聊天程序 我需要一个地方来存储消息 客户端将每隔 x 秒与服务器联系一次最后收到的消息 id 服务器将在客户端加入的房间中查找 id 高于该 id 的所有消息 由于我不会永远存储内容 因此我正在考虑使用仅包含最后 40 条左右