mysql与cassandra中的插入速度



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

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

php用作编程语言YACassandraPDO和cataloniaframework用作php驱动程序,PDO用作mysql驱动程序

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

基准细节:

cassandra keyspace和column家族结构:创建密钥空间测试2WITH 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数据库test

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

我的基准测试结果:

在大约26秒的时间里,在cassandra中插入每100000条记录,在大约11s的中,在mysql中插入每个100000条记录

在关于卡桑德拉的24秒内每100000次更新一次,在大约mysql 中,12秒内每100000次更新一次

在大约卡桑德拉的741秒内选择每10000个,在大约mysql 中的21秒内选择每个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至少可以在更新时禁用此功能,也可以在MySQL中使用。

如果你想测试cassandra,你可以简单地使用安装了datastax的cassandra压力工具。你可以在里面找到C: \Program Files\DataStax DDC\apache cassandra\tools\bin这是一个蝙蝠档案。甚至不需要写一行代码,只需使用所需的参数执行即可,并对cassandra进行基准测试。

相关内容

  • 没有找到相关文章

最新更新