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 : 保存计数器的信息
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值