mysql - 在 mysql vs cassandra 中插入速度

标签 mysql sql benchmarking cassandra-2.0 nosql

我有很多(每秒约 100 万条)必须插入数据库的结构数据 我看到很多关于 sql 与 noSql 和 Nosql 类型的基准测试,然后收集 cassandra 作为数据库

但我创建了一个基准来测试 mysql 与 cassandra 的写入/更新/选择速度 mysql 在我的基准测试中有更好的性能,我想知道我的错误是什么??

php 用作编程语言 YACassandraPDOcataloniaframework用作 php 驱动程序和 PDO 用作 mysql 驱动程序

我的服务器是 centOS 6.5,2 核 CPU 和 2GB 内存, mysql和cassandra有默认配置

基准测试详情:

cassandra键空间和列族结构: 创建键空间测试2 WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 } AND durable_writes = false;

CREATE TABLE test (
    uuid int PRIMARY KEY,
    symbol_id int,
    bid int,
    ask int,
    time timestamp,
);

mysql数据库及表结构: 创建数据库测试;

CREATE TABLE `test` (
    `id` INT NOT NULL ,
    `symbol_id` int,
    `bid` int,
    `ask` int,
    time timestamp,
    PRIMARY KEY (id)
)ENGINE=MyISAM;

我的基准测试结果:

在cassandra中每插入100000条记录大约需要26s, mysql每插入100000条记录大约11s

在大约 cassandra 的 24 秒内更新每 100000 个, mysql 12s内更新每100000条

在大约cassandra的741s中选择每10000个, mysql 21秒内SELECT每10000条

我的 php 代码用于基准测试:

Cassandra 代码:

$db_handle = new PDO("$dbtype:host=$dbhost;port=$dbport;cqlversion=3.0.0;dbname=$dbname", $dbuser, $dbpass);
while ($count < $rowNum){
    $stmt = $db_handle->prepare("INSERT INTO test (uuid, symbol_id, bid, ask, time) values ($count, " . rand(1, 100) . ", " . rand(1, 10000) . ", ".  rand(1, 10000).", dateof(now())); ");
    $exec = $stmt->execute();     
 }
 unset($db_handle);

mysql代码:

$db_handle = new PDO("$dbtype:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
while ($count < $rowNum){
    $stmt = $db_handle->prepare("INSERT INTO test (id, symbol_id, bid, ask, time) values ($count, " . rand(1, 100) . ", " . rand(1, 10000) . ", ".  rand(1, 10000).", now()); ");
    $exec = $stmt->execute();
}
unset($db_handle);

最佳答案

通过说

禁用可能的 MySQL 缓存
SELEC SQL_NO_CACHE ...

MySQL 在每个 INSERT/UPDATE 中检查 PRIMARY KEY 的完整性。 MariaDB至少可以disable this对于更新,也可能适用于 MySQL。

关于mysql - 在 mysql vs cassandra 中插入速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645563/

相关文章:

php - 根据顺序列相应地更新周围的行

php - MySQL(不是 mysqli)插入最后一个 ID 不起作用

mysql - 在 GROUP BY 中使用 LIMIT 来获得每组 N 个结果?

sql - SQL 查询中选择的语法

postgresql - 有人拥有 TPC-H 模式和数据?

javascript - id vs 类选择基准

MySQL 8.0 : CTE WITH not execute two subclauses

mysql - 在 SQL 查询中使用单引号

MySQL - 当嵌套选择使用该表时如何从表中删除?

c++ - 循环效率: merging loops