如何修改gridfs 的chunk size ?


  • 註冊用戶

    官方的文件有提到可以修改却查不到对应的指令,有好心的大大可以告知吗?

    mongos> db.fs.files.save( {chunksize: 2048 } )

    mongos> db.fs.files.find().pretty()

    { "_id" : ObjectId("5940ad9a13e0c42dd8278fd9"), 

    "filename" : "voice", 

    "hashID" : NumberLong("71473308872"), 

    "md5" : "5eb3b5d67d2f688c908f3aa545a69dd1", 

    "chunkSize" : 261120,

    "length" : 882000, 

    "uploadDate" : ISODate("2017-06-14T03:29:31.817Z")}

    { "_id" : "chunksize", "value" : 2048 }


  • Lv 1

    db.settings.save( { _id:"chunksize", value: <sizeInMB> } )
    修改数据块大小有一些限制:
    自动分裂只发生在写入与更新时.
    If you lower the chunk size, it may take time for all chunks to split to the new size.
    分裂不能被回滚
    If you increase the chunk size, existing chunks grow only through insertion or updates until they reach the new size.
    The allowed range of the chunk size is between 1 and 1024 megabytes, inclusive.

  • 註冊用戶

    感謝,chunksize有兩個層級,系統層級如同大大所說的

    我想問的是gridfs層級官網這篇提到的預設255KB

    本帖下載内容已隐藏,请登入以查看隐藏内容!

    mongos> db.settings.save( { _id:"chunksize", value: 2048 } )

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

    mongos> db.fs.files.find().pretty()

    { "_id" : ObjectId("5940e4ba13e0c42dd8278fdf"),

    "filename" : "voice", "hashID" : NumberLong("19461501238"), 

    "md5" : "5eb3b5d67d2f688c908f3aa545a69dd1", 

    "chunkSize" : 261120, 

    "length" : 882000, 

    "uploadDate" : ISODate("2017-06-14T07:24:45.847Z")}

    大大的方法似乎還是沒有修正它


  • Lv 1

    看起來不能改, 請問修改目的?

     MongoDB從2.4.10開始將默認的chunkSize修改為255KB,之前都是256KB。官網說為什麼要修改,原來mongodb的伺服器總是以2^n個位元組獲取空間的,當默認設置的chunkSize為256K的時候,binaryData將會消耗掉256K的空間,而其他的欄位如_id, file_ids 和 n 就會佔用額外的幾十個位元組的空間。這樣一來就會超過256K,那麼伺服器就會給每一個chunk分配512K , 這導致浪費許多


  • 註冊用戶

    @leo 因為我們的資料剛好是100多KB的音檔,會選用Gridfs是想讓開發人員比較方便


  • Lv 1

    @r76021061 说:

    100多KB的音檔

     直接用 Binary 資料型台存成 Blob 即可


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待