Cassandra 之Memtable,SSTable

Memtable 是cassandra 写入磁盘之前进入的内存结构区域

对于一个写请求来说满足如下2个条件,才会向客户端返回成功
  • 成功写入commit_log 中
  • 成功写入内存的memtable 中
Memtable 满足如下条件,才会从内存中向磁盘sstable 中写数据
  • commit_log 空间到达阈值 commitlog_total_space_in_mb
  • 内存空间到达阈值 memtable_cleanup_threshold
注意commit_log 的空间默认是8G,不可设置太小以防止频繁的刷新

如何手动的刷新memtable

  • nodetool flush keyspace ( table )
  • nodetool drain --不建议执行
**nodetool drain 会停止listener,中断一切应用程序的连接

测试nodetool flush

观察flush 之前数据并没有写入到磁盘
[cassandra@tjtestrac1 data]$ tree -L 1
.
├── myspace
├── system
├── system_auth
├── system_distributed
├── system_traces
└── testspace

6 directories, 0 files

[cassandra@tjtestrac1 t_test-d804f310035411e9bbae6547c40a1f9b]$ ls
backups
执行flush 命令
[cassandra@tjtestrac1 t_test-d804f310035411e9bbae6547c40a1f9b]$ nodetool flush testspace
观察flush 之后的数据文件
[cassandra@tjtestrac1 t_test-d804f310035411e9bbae6547c40a1f9b]$ ls -lhtr
total 40K
drwxrwxr-x 2 cassandra cassandra 4.0K Dec 19 14:10 backups
-rw-rw-r-- 1 cassandra cassandra   16 Dec 19 14:15 lb-1-big-Filter.db
-rw-rw-r-- 1 cassandra cassandra   18 Dec 19 14:15 lb-1-big-Index.db
-rw-rw-r-- 1 cassandra cassandra   84 Dec 19 14:15 lb-1-big-Summary.db
-rw-rw-r-- 1 cassandra cassandra   56 Dec 19 14:15 lb-1-big-Data.db
-rw-rw-r-- 1 cassandra cassandra   10 Dec 19 14:15 lb-1-big-Digest.adler32
-rw-rw-r-- 1 cassandra cassandra   43 Dec 19 14:15 lb-1-big-CompressionInfo.db
-rw-rw-r-- 1 cassandra cassandra 4.4K Dec 19 14:15 lb-1-big-Statistics.db
-rw-rw-r-- 1 cassandra cassandra   94 Dec 19 14:15 lb-1-big-TOC.txt

SSTable 是由操作系统上一系列文件组成得的

[cassandra@tjtestrac1 testspace]$ tree -L 1
.
├── t_tab-54904590035711e9bbae6547c40a1f9b
└── t_test-d804f310035411e9bbae6547c40a1f9b

2 directories, 0 files
从目录层级看 命名规范: /{keyspace名称}/{table名称}-unique table ID
flush table 级别的 memetable :
[cassandra@tjtestrac1 t_tab-54904590035711e9bbae6547c40a1f9b]$ nodetool flush testspace t_tab
观测sstable 的文件如下:
[cassandra@tjtestrac1 t_tab-54904590035711e9bbae6547c40a1f9b]$ ls -lhtr
total 40K
drwxrwxr-x 2 cassandra cassandra 4.0K Dec 19 14:28 backups
-rw-rw-r-- 1 cassandra cassandra   16 Dec 19 14:33 lb-1-big-Filter.db --bloom filter文件
-rw-rw-r-- 1 cassandra cassandra   18 Dec 19 14:33 lb-1-big-Index.db --索引文件
-rw-rw-r-- 1 cassandra cassandra   84 Dec 19 14:33 lb-1-big-Summary.db --分区索引信息
-rw-rw-r-- 1 cassandra cassandra   56 Dec 19 14:33 lb-1-big-Data.db --数据文件
-rw-rw-r-- 1 cassandra cassandra   10 Dec 19 14:33 lb-1-big-Digest.adler32
-rw-rw-r-- 1 cassandra cassandra   43 Dec 19 14:33 lb-1-big-CompressionInfo.db --压缩信息
-rw-rw-r-- 1 cassandra cassandra 4.4K Dec 19 14:33 lb-1-big-Statistics.db-- 统计信息
-rw-rw-r-- 1 cassandra cassandra   94 Dec 19 14:33 lb-1-big-TOC.txt
缓存sstable 中 的数据:
  • Key cache :保存partition index 的信息
  • Row cache : 保存行的信息
  • Counter cache : 保存计数器的信息

猜你喜欢

转载自blog.csdn.net/chenxu_0209/article/details/85098056