pycassa가 keys_cached
및 rows_cached
필드를 특정 열 패밀리 (또는 키 스페이스)에 설정할 수 있는지 알고 싶습니다. 카산드라 CLI를 사용하여 다음과 같이 :키와 행을 pycassa를 사용하여 열 패밀리에 설정 하시겠습니까?
http://www.datastax.com/docs/1.0/configuration/storage_configuration 내가이 문서에 key_cache_size
인수를 취하는 alter_column_family
기능 발견 : http://pycassa.github.io/pycassa/api/pycassa/system_manager.html
하지만을 나는 컬럼의 키 캐시 크기를 설정 한 후 pycassaShell와 캐시 값을 검사 할 때 가족 (http://pycassa.github.io/pycassa/assorted/pycassa_shell.html), 그것은 여전히 내게 알려줍니다
Row Cache: None%
Key Cache: None%
을 또한이 후 중 성능/메모리 사용량의 차이가 없습니다, 그리고 alter_column_family
는 **kwargs
인수 및 apparen 걸리므 tly는 그것들을 체크하지 않고, 어떤 인자 이름으로도 호출을 성공시킨다 ... 그래서 나는 key_cache_size
이 아무 것도 상상하지 않는다고 생각한다 ... 그리고 나는 가능한 선택적 인자가 무엇인지에 대한 문서를 찾지 못했다. 대한 pycassaShell 출력과 모순으로 보인다 흥미로운 caching=KEYS_ONLY
인수가,있다
INFO 17:39:26,338 Update ColumnFamily '53c7deadcc9b10271a2df9f0/B' From [email protected][cfId=2dd38542-82ea-381f-be51-44a30af61f24,ksName=53c7deadcc9b10271a2df9f0,cfName=B,cfType=Standard,comparator=org.apache.cassandra.db.marshal.IntegerType,comment=,readRepairChance=0.1,dclocalReadRepairChance=0.0,replicateOnWrite=true,gcGraceSeconds=864000,defaultValidator=org.apache.cassandra.db.marshal.DoubleType,keyValidator=org.apache.cassandra.db.marshal.IntegerType,minCompactionThreshold=4,maxCompactionThreshold=32,column_metadata={java.nio.HeapByteBuffer[pos=0 lim=3 cap=3]=ColumnDefinition{name=6b6579, validator=org.apache.cassandra.db.marshal.IntegerType, type=PARTITION_KEY, componentIndex=null, indexName=null, indexType=null}, java.nio.HeapByteBuffer[pos=0 lim=5 cap=5]=ColumnDefinition{name=76616c7565, validator=org.apache.cassandra.db.marshal.DoubleType, type=COMPACT_VALUE, componentIndex=null, indexName=null, indexType=null}, java.nio.HeapByteBuffer[pos=0 lim=7 cap=7]=ColumnDefinition{name=636f6c756d6e31, validator=org.apache.cassandra.db.marshal.IntegerType, type=CLUSTERING_KEY, componentIndex=null, indexName=null, indexType=null}},compactionStrategyClass=class org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy,compactionStrategyOptions={},compressionOptions={sstable_compression=org.apache.cassandra.io.compress.LZ4Compressor},bloomFilterFpChance=<null>,memtable_flush_period_in_ms=0,caching=KEYS_ONLY,defaultTimeToLive=0,speculative_retry=NONE,indexInterval=128,populateIoCacheOnFlush=false,droppedColumns={},triggers={}] To [email protected][cfId=2dd38542-82ea-381f-be51-44a30af61f24,ksName=53c7deadcc9b10271a2df9f0,cfName=B,cfType=Standard,comparator=org.apache.cassandra.db.marshal.IntegerType,comment=,readRepairChance=0.1,dclocalReadRepairChance=0.0,replicateOnWrite=true,gcGraceSeconds=864000,defaultValidator=org.apache.cassandra.db.marshal.DoubleType,keyValidator=org.apache.cassandra.db.marshal.IntegerType,minCompactionThreshold=4,maxCompactionThreshold=32,column_metadata={java.nio.HeapByteBuffer[pos=0 lim=7 cap=7]=ColumnDefinition{name=636f6c756d6e31, validator=org.apache.cassandra.db.marshal.IntegerType, type=CLUSTERING_KEY, componentIndex=null, indexName=null, indexType=null}, java.nio.HeapByteBuffer[pos=0 lim=3 cap=3]=ColumnDefinition{name=6b6579, validator=org.apache.cassandra.db.marshal.IntegerType, type=PARTITION_KEY, componentIndex=null, indexName=null, indexType=null}, java.nio.HeapByteBuffer[pos=0 lim=5 cap=5]=ColumnDefinition{name=76616c7565, validator=org.apache.cassandra.db.marshal.DoubleType, type=COMPACT_VALUE, componentIndex=null, indexName=null, indexType=null}},compactionStrategyClass=class org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy,compactionStrategyOptions={},compressionOptions={sstable_compression=org.apache.cassandra.io.compress.LZ4Compressor},bloomFilterFpChance=<null>,memtable_flush_period_in_ms=0,caching=KEYS_ONLY,defaultTimeToLive=0,speculative_retry=NONE,indexInterval=128,populateIoCacheOnFlush=false,droppedColumns={},triggers={}]
INFO 17:39:26,349 CFS(Keyspace='system', ColumnFamily='schema_columnfamilies') liveRatio is 5.344978165938865 (just-counted was 5.344978165938865). calculation took 0ms for 25 cells
INFO 17:39:26,349 Enqueuing flush of [email protected](138/8832 serialized/live bytes, 3 ops)
WARN 17:39:26,350 setting live ratio to maximum of 64.0 instead of Infinity
INFO 17:39:26,351 CFS(Keyspace='system', ColumnFamily='schema_keyspaces') liveRatio is 64.0 (just-counted was 64.0). calculation took 1ms for 0 cells
INFO 17:39:26,351 Writing [email protected](138/8832 serialized/live bytes, 3 ops)
INFO 17:39:26,368 Completed flushing var/lib/cassandra/data/system/schema_keyspaces/system-schema_keyspaces-jb-79-Data.db (177 bytes) for commitlog position ReplayPosition(segmentId=1405696976943, position=238330)
INFO 17:39:26,373 Enqueuing flush of [email protected](1145/6120 serialized/live bytes, 25 ops)
INFO 17:39:26,373 Writing [email protected](1145/6120 serialized/live bytes, 25 ops)
INFO 17:39:26,381 Completed flushing var/lib/cassandra/data/system/schema_columnfamilies/system-schema_columnfamilies-jb-74-Data.db (787 bytes) for commitlog position ReplayPosition(segmentId=1405696976943, position=238330)
하지만,이 키 캐시 크기의 크기에 대한 아무것도, 아무것도 : 여기
그것이alter_column_family
전화를받을 때 카산드라 로그입니다 행 캐쉬. 내가
key_cache_size=200000
,
0
또는
None
을 넣어도 동일한 출력을 얻습니다.
그래서 누군가가 pycassa를 통해 어떻게하는지 알고 있습니까?
고마워요! 글쎄 실제로 그것은 공연을 변경하지 않았지만 내 요청에 대한 디스크 액세스가 없기 때문에 나는 행 캐시가 작동하고 있다고 생각한다. 내 문제는 필자가 드물게 작성한 37 개의 열과 5735 개의 키가있는 열 패밀리를 가지고 있지만 완전히 읽어야 할 필요가 있으며, 매우 구체적인 문제에 대한 CQL 드라이버를 시도해 보았고 SELECT *가 거의 나왔습니다. pycassa의'get_range()'보다 3 배 느린데, 결과의 페이징과 관련이 있다고 생각합니다. 그러나 어느 경우 든 제어 할 수있는 옵션이 없습니다. 내 프로그램 측면에서 캐싱을 제외하고는 어떤 생각입니까? –
아 그냥'SimpleStatement'의'fetch_size' 인자를 찾았습니다. 하지만 여전히'PagedResult'를 가지고 있으며'fetch_size'를 반복해서 반복 할 때마다 5000 개의 항목을 모두 차단하고 있습니다. –
이제는'Session.default_fetch_size'를'SimpleStatement'의'fetch_size' 인수와 함께 사용할 수 없으므로 수동으로 오버로드 시켰습니다. 이제는 작동하지만 여전히 pycassa의 get_range()보다 약 50 % 느립니다 (5.2 s 대 3.6s). 내가 왜 그렇게 작은 테이블을 위해 너무 느린지 궁금해 ... –