gpt4 book ai didi

mysql - bean 茎与数据库

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:14 25 4
gpt4 key购买 nike

我正在编写一个数据库日志记录 ruby​​ gem,它将简单地从 Beanstalk 队列中取出一个作业并将其写入数据库。

那是服务器 A 上的一个进程在服务器 B 上的 Beanstalk 队列中放置一个作业(它想要记录),我在服务器 B 上的日志进程取出它并将其写入服务器 B 上的 mysql 数据库。

我想知道这是否值得?将作业放入 Beanstalk 队列比写入数据库更快。或者我想要记录到 DB 的进程是否可以直接将其写入 DB 而不是使用日志记录进程。

请注意,beanstalk 服务器和数据库都在另一台服务器上。

Beanstalk 在内部进行从服务器 A 到服务器 B 的套接字调用。我相信 mysql 也需要做同样的事情?

因此,mysql 到另一台服务器的速度将比放入 beanstalk 队列慢。

最佳答案

它会快得多,主要是因为 Beanstalkd 作业,默认情况下,are stored in-memory并且会丢失,例如,如果您的服务器断电,而 MySQL 是一个强 ACID 兼容的关系数据库,因此将付出很多努力并将您的每个日志刷新到磁盘。

我想您会发现,在对系统生成的大量日志进行一些基准测试之后,磁盘 I/O 将成为您的限制因素,而不是 TCP/IP 套接字的速度。您当前系统的优势在于,当服务器 A 在服务器 B 的 beanstalkd 实例上提交日志时,它占用服务器 A 的时间很少,并且服务器 B 可以定期将我们的许多日志从 beanstalkd 一次刷新到 MySQL,从而使该过程更有效率。缺点是,您对日志进行批处理的次数越多,在发生软件/电源故障时丢失的日志就越多,除非您使用 beanstalkd 的“-b”参数,该参数通过将作业写入磁盘来使作业持久化(因此使过程变慢)。

当然,真正解决这个问题的唯一方法就是对标!

关于mysql - bean 茎与数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7049234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com