Php 对于简单的操作,Cassandra比Mysql慢很多?

Php 对于简单的操作,Cassandra比Mysql慢很多?,php,mysql,performance,cassandra,Php,Mysql,Performance,Cassandra,我看到很多这样的语句:“Cassandra写得非常快”,“Cassandra读得比写慢,但比Mysql快得多” 在我的windows7系统上: 我安装了默认配置的Mysql。 我安装了默认配置的PHP5。 我安装了默认配置的Casssandra 在mysql上进行简单的写测试:“插入wp_test(id,title)值('id01','test')”给我的结果是:0.0002(s) 对于1000个插件:0.1106(s) 对Cassandra进行简单相同的写测试:$column_faily->i

我看到很多这样的语句:“Cassandra写得非常快”,“Cassandra读得比写慢,但比Mysql快得多”

在我的windows7系统上: 我安装了默认配置的Mysql。 我安装了默认配置的PHP5。 我安装了默认配置的Casssandra

在mysql上进行简单的写测试:“插入
wp_test
id
title
)值('id01','test')”给我的结果是:0.0002(s) 对于1000个插件:0.1106(s)

对Cassandra进行简单相同的写测试:$column_faily->insert('id01',array('title'=>'test'))给我的结果是:0.005(s) 对于1000个插件:1.047(s)

对于读取测试,我还发现Cassandra比mysql慢得多


所以问题是,我在Cassadra上的一次写操作有5ms,这听起来正确吗?或者出现了问题,应该至少为0.5ms。

MySQL驱动程序的成熟度,特别是PHP5.3中改进的MySQL驱动程序,可能会对测试产生一些影响。查询中数据的简单性也完全可能会影响结果——可能在100个值的插入中,Cassandra会变得更快


从命令行尝试相同的测试,看看时间戳是什么,然后尝试使用不同数量的值。你不能只做一个测试,就以此为基础做出决定。

Cassandra从并行化和批处理中获益匪浅。尝试在100个线程中的每一个线程上进行100万次插入(每个线程都有自己的连接&一批100次),看看哪一个更快

最后,Cassandra insert性能应该相对稳定(在很长时间内保持高吞吐量)。有了MySQL,你会发现,一旦用于索引的btree内存增长过大,它就会急剧下降。

当人们说“Cassandra比MySQL快”时,他们的意思是当你处理TB的数据和许多同时出现的用户时。Cassandra(和许多分布式NoSQL数据库)针对多个节点上的数百个同时读写器进行了优化,而MySQL(和其他关系数据库)在单个节点上的优化速度非常快,但当您试图跨多个节点扩展它们时,它们往往会崩溃。顺便说一句,这种折衷有一个概括——绝对最快的磁盘I/O是普通的旧UNIX平面文件,许多对延迟敏感的金融应用程序正是出于这个原因使用它们的

如果你正在构建下一个Facebook,你需要像Cassandra这样的东西,因为一个MySQL盒子永远经不起数千次同时读写的惩罚,而有了Cassandra,你可以扩展到数百个数据节点并轻松处理这些负载。看


另一个用例是当您需要对TB或PB的数据应用大量批处理能力时。Cassandra或HBase非常棒,因为它们与MapReduce集成,允许您在数据节点上运行处理。使用MySQL,您需要提取数据并将其分散到处理节点的网格中,这将消耗大量网络带宽并带来许多不必要的复杂性。

许多用户空间因素都会影响写入性能。例如:

  • 每个数据库服务器配置中都有几十个设置
  • 表结构和设置
  • 连接设置
  • 查询设置
你是在接受警告还是例外?MySQL示例将根据面值生成一个重复的键错误。它可能会失败,而什么也不做。卡桑德拉在同一案件中的所作所为我并不熟悉

我对Cassandra有限的经验告诉我有关插入的一件事,当其他一切的性能随着数据的增长而下降时,插入似乎保持相同的速度。然而,与MySQL相比,它的速度有多快并不是我测试过的

插入速度可能不是很快,而是尽量不慢。如果您想要一个更有意义的测试,您需要结合并发性和场景上的更多变化,如大型数据集、各种批量大小等。更复杂的测试可能会测试数据插入后可用性的延迟以及随时间的推移的读取速度

如果Cassandra插入数据的第一个调用端口是将数据放入队列或简单地追加数据,我也不会感到惊讶。如果您查看一致性级别,这是可配置的。MySQL同样允许您平衡性能和可靠性/可用性,尽管它们允许和不允许的内容各有不同

除此之外,除非你深入到内部,否则可能很难说为什么一个表现比另一个好

我在不久前为Cassandra做了一些用例基准测试。对于基准测试,它将首先插入数万行。我不得不让脚本休眠几秒钟,因为否则在事实发生后运行的查询将看不到数据,并且我正在测试的实现之间的结果将不一致


如果您真的想要快速插入,请附加到ramdisk上的文件。

并且可能会有一些有用的建议。如果Cassandra在Linux系统上更快乐,我也不会感到惊讶。您不能只使用一条记录进行测试。用一百万来测试。MySQL的写入速度会慢一些(特别是在使用InnoDB的情况下),但基于主键的读取速度可能会快一些。@ceejayoz,在linux系统上测试过,samre resultcassandra是按比例构建的。有了这样一个基准(一个客户机只做1000次插入),mysql将获胜。当你的mysql超过一台机器时,你将从cassandra中获得优势,你必须将数据和负载分散到多台机器上。我的问题是,对于单个服务器,每次写入操作大约5毫秒。这个速度听起来正确吗?例如,如果有人告诉我他的mysql不是