rocksdb是facebook基於leveldb實現的,目前為facebook內部大量業務提供服務。經過facebook大量工作,將rocksdb作為mysql的乙個儲存引擎移植到mysql,稱之為myrocks。
經過兩年的發展,myrocks已經比較成熟(rc階段),現已進入了facebook mysql的主分支了。myrocks是開源的,參見git 。
下面對myrocks做乙個簡單介紹,不涉及原始碼。
來看看facebook的測試資料
資料字段資訊儲存在system column family (system cf) 「system「中
資料字段資訊包括:
以上資訊可以通過information_schema檢視,如rocksdb_ddl,rocksdb_index_file_map等
rocksdb的行以key value的形式儲存,和innodb類似,記錄格式主鍵和二級索引也有區別
myrocks也是基於行鎖,鎖資訊都儲存在記憶體中。
myrocks也支援mvcc,mvcc通過快照的方式實現,類似於postgresql。
myrocks目前只支援兩種隔離級別,rc和rr。
rr表現和innodb並不一樣,rocksdb 的快照不是在事務開始的時候建立,而是延遲到第一次讀的時候建立.
以下client1 myrocks返回的是2,innodb返回1
1> 2>
create table t1
(pk int primary key)
;insert into t1 values
(1);
set session transaction isolation level repeatable read;
set session transaction isolation level repeatable read;
begin
insert into t1 values
(2);
select count
(*) from t1; // myrocks返回的是2,innodb返回1
rc表現也不一樣,事務1大更新多行過程中,其他事務也可以更新事務還未更新到的行,事務1再更新時會失敗。
myrocks也是通過binlog方式複製,由於binlog與rocksdb之間沒有xa,異常crash可能丟資料,所以,myrocks主備環境建議開啟semi-sync.
由於gap lock支援不健全(僅primary key上支援), 使用statement方式複製會導致不一致,所有myrocks建議使用行級複製。
支援mysqldumup邏輯備份
#內部會執行以下語句
settransaction
isolation
level repeatable read;
start
transaction
with
consistent rocksdb snapshot;
同時有自動的物理備份工具myrocks_hotbackup,但還不支援備份innodb; 也不支援增量備份。myrocks_hotbackup支援流式備份
myrocks_hotbackup--user=root --port=3306 --checkpoint_dir=/data/backup --stream=xbstream| ssh$dst『xbstream–x /data/backup』
setglobal rocksdb_create_checkpoint= /path/to/backup
rocksdb_skip_unique_check=1
rocksdb_commit_in_the_middle=1
rocksdb_write_disable_wal=1
rocksdb_max_background_flushes=40
rocksdb_max_background_compactions=40
rocksdb_default_cf_options=(in addition to existing parameters); write_buffer_size=128m;level0_file_num_compaction_trigger=4;level0_slowdown_writes_trigger=256;level0_stop_writes_trigger=256;max_write_buffer_number=16;memtable=vector:1024
rocksdb_override_cf_options=(in addition to existing parameters);__system__=
myrocks目前有以下一些 MapX特性分析
mapx是mapinfo公司向使用者提供的具有強大地圖分析功能的activex控制項產品。由於它是一種基於windows作業系統的標準控制項,因而能支 持絕大多數標準的視覺化開發環境如visual c visual basic delphi powerbuilder等。利用mapx,程式設計人員可以...
mysql引擎特性 Mysql儲存引擎特性總結
幾個常用儲存引擎的特點 下面我們重點介紹幾種常用的儲存引擎並對比各個儲存引擎之間的區別和推薦使用方式。特點myisam bdbmemory innodb archive 儲存限制 沒有沒有 有64tb 沒有事務安全 支援支援 鎖機制表鎖 頁鎖表鎖 行鎖行鎖 b樹索引 支援支援 支援支援 雜湊索引 支...
mysql的事物特性 MySQL事務特性及隔離級別
事務的4個特性 在mysql中,innodb和bdb型別表可以支援事務。通過innodb和bdb型別表,mysql事務能夠完全滿足事務安全的acid測試,但是並不是所有表型別都支援事務,如myisam型別表就不能支援事務,只能通過偽事務對錶實現事務處理。acid指出每個事務型rdbms必須遵守的4個...