在mysql vs cassandra中插入速度
我有很多(大约一百万秒)必须插入数据库的结构数据我看到很多关于 sql vs noSql 和 Nosql 类型的基准测试,然后收集 cassandra 作为数据库
I have a lot of (about 1 million in second)structural data that must be insert to database I see a lot of benchmark about sql vs noSql and type of Nosql then collect cassandra as database
但我创建了一个基准来测试 mysql 与 cassandra 的写入/更新/选择速度mysql 在我的基准测试中有更好的性能,我想知道我的错误是什么?
but I create a benchmark to test mysql vs cassandra in write/update/select speed mysql have better performance in my benchmark, I want to know what is my mistake??
php 用作编程语言YACassandraPDO 和 cataloniaframework 用作 php 驱动程序和 PDO 用作 mysql 驱动程序
php use as programming language YACassandraPDO and cataloniaframework use as php driver and PDO use as mysql driver
我的服务器是 centOS 6.5,有 2 核 CPU 和 2GB RAM,mysql 和 cassandra 有默认配置
my server is centOS 6.5 with 2 core CPU and 2GB RAM, mysql and cassandra have default configuration
cassandra 键空间和列族结构:创建密钥空间测试2WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }AND 持久写入 = 假;
cassandra keyspace and column family structure: CREATE KEYSPACE test2 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数据库和表结构:创建数据库 test
;
mysql database and table structure:
CREATE DataBase test
;
CREATE TABLE `test` (
`id` INT NOT NULL ,
`symbol_id` int,
`bid` int,
`ask` int,
time timestamp,
PRIMARY KEY (id)
)ENGINE=MyISAM;
我的基准测试结果:
在 cassandra 中插入每 100000 条记录大约需要 26 秒,在mysql中插入每100000条记录大约需要11s
my result of benchmark:
Insert each 100000 record in cassandra in about 26s, Insert each 100000 record in mysql in about 11s
在大约 cassandra 的 24 秒内更新每 100000 个,在大约 mysql 的 12 秒内更新每 100000 个
UPDATE each 100000 in 24s in about cassandra, UPDATE each 100000 in 12s in about mysql
在大约 cassandra 的 741 中选择每 10000 个,21秒内SELECT每10000个约mysql
SELECT each 10000 in 741s in about cassandra, SELECT each 10000 in 21s in about mysql
cassandra 代码:
cassandra code:
$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);
推荐答案
如果你想测试 cassandra,你可以简单地使用 cassandra-stress 工具,随 datastax 一起安装.你可以在C:Program FilesDataStax-DDCapache-cassandra oolsin这是一个bat文件.甚至不需要编写一行代码,只需使用所需的参数执行它并对 cassandra 进行基准测试.
if you wanna test cassandra, you can simply use cassandra-stress tools, installed with datastax. you can find it in C:Program FilesDataStax-DDCapache-cassandra oolsin it's a bat file. no need to write even a line of code, simply execute it with desired parameter and benchmark the cassandra.
相关文章