LoginSignup
0
0

More than 5 years have passed since last update.

mongoDB timestamp カラムが Binary(unixtime) の場合と ASCII の場合とで違いを確認した

Posted at

mongoDB で timestamp のカラムを Binary(unixtime) にした場合と、ASCII 文字列とした場合とで、インデックスの大きさとか、クエリーのパフォーマンスが変わるのかと思って確認してみた。

登録データ

(Binary ケース)
mongodb> db.test11.findOne()
{
        "h" : {
                "t" : 1400000000,
                "n" : "host0001",
                "i" : "item0001"
        },
        "d" : [
                {
                        "p" : "parameter0001",
                        "v" : 1.1
                },
                {
                        "p" : "parameter0002",
                        "v" : 2.2
                },
                {
                        "p" : "parameter0003",
                        "v" : 3.3
                }
        ]
}

(ASCII ケース)
mongodb> db.test12.findOne()
{
        "h" : {
                "t" : "1400000000",
                "n" : "host0001",
                "i" : "item0001"
        },
        "d" : [
                {
                        "p" : "parameter0001",
                        "v" : 1.1
                },
                {
                        "p" : "parameter0002",
                        "v" : 2.2
                },
                {
                        "p" : "parameter0003",
                        "v" : 3.3
                }
        ]
}

クエリー

(Binary ケース)
mongodb> db.test11.find({'h.t':{'$gte':1400000000,'$lte':14000086400}}).explain()

(ASCII ケース)
mongodb> db.test12.find({'h.t':{'$gte':'1400080000','$lte':'1400082000'}}).explain()

結果

インデックスサイズ(MB)

データ数 Binary ケース ASCII ケース
1000000 24 26
2000000 47 53
10000000 239 268

クエリーのパフォーマンス(msec)

数回クエリーを発行して、Index, データがメモリに乗ったであろう状態から測定開始

query(1%)

データ数 Binary ケース ASCII ケース
1000000 0 0
2000000 1 1
10000000 73 65

query(2%)

データ数 Binary ケース ASCII ケース
1000000 1 1
2000000 2 2
10000000 145 133

query(5%)

データ数 Binary ケース ASCII ケース
1000000 3 3
2000000 7 6
10000000 357 323

気付き

インデックスサイズは、ASCII ケースの方が大

クエリーパフォーマンスは、ASCII ケースの方が数%-10数% よい

あくまで参考として。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0