2016-07-25 2 views
1

우리는 보이는 테이블이 : 나는 실행하면카산드라 성능 문제

CREATE TABLE arc_dynamic.transit_map (
    sal text, 
    pfn text, 
    transit_map_id text, 
    create_program_id text, 
    create_timestamp timestamp, 
    cutoff_times map<text, text>, 
    derived_priority int, 
    effective_date text, 
    modify_program_id text, 
    modify_timestamp timestamp, 
    relationship_type_id text, 
    solr_query text, 
    stop set<text>, 
    transit_days map<text, int>, 
    trigger_id text, 
    PRIMARY KEY (sal, pfn, transit_map_id) 
) WITH CLUSTERING ORDER BY (pfn ASC, transit_map_id ASC) 
    AND bloom_filter_fp_chance = 0.01 
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' 
    AND comment = '' 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'} 
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 0 
    AND gc_grace_seconds = 864000 
    AND max_index_interval = 2048 
    AND memtable_flush_period_in_ms = 0 
    AND min_index_interval = 128 
    AND read_repair_chance = 0.0 
    AND speculative_retry = '99.0PERCENTILE'; 

CREATE CUSTOM INDEX arc_dynamic_transit_map_create_timestamp_index ON arc_dynamic.transit_map (create_timestamp) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex'; 
CREATE CUSTOM INDEX arc_dynamic_transit_map_derived_priority_index ON arc_dynamic.transit_map (derived_priority) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex'; 
CREATE CUSTOM INDEX arc_dynamic_transit_map_modify_timestamp_index ON arc_dynamic.transit_map (modify_timestamp) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex'; 
CREATE CUSTOM INDEX arc_dynamic_transit_map_relationship_type_id_index ON arc_dynamic.transit_map (relationship_type_id) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex'; 
CREATE CUSTOM INDEX arc_dynamic_transit_map_solr_query_index ON arc_dynamic.transit_map (solr_query) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex'; 
CREATE CUSTOM INDEX arc_dynamic_transit_map_trigger_id_index ON arc_dynamic.transit_map (trigger_id) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex'; 

:

select * from transit_map where sal='XXX_953'; 

그것은 시간이 초과 :

ReadTimeout: code=1200 [Coordinator node timed out waiting for replica nodes' 
responses] message="Operation timed out - received only 0 responses." info= 
{'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'} 

내가 10 개 행을 제한하는 경우를 이하, 그것은 다시 온다. 뭐든지, 타임 아웃. 나는 그것이 잘못되어 가고있는 곳 (너무 많은 멍청이, 묘비, 다른 것)을 찾아 내려고 노력하고있다. 그러나 이것에 어떻게 접근해야하는지 알 수 없다.

추적 기능을 사용하도록 설정했습니다. 10 행 제한 이하의 경우 "너무 나쁨"(적어도 출력이 있음)은 아닙니다.

11 행 제한을 넣거나 공백 (제한 없음)으로두면 추적 결과가 다시 표시되지 않습니다.

어디에서든지 도움을 받으실 수있는 곳입니다. 오라클의 오랜 배경에서오고 있으며, 카산드라에서이를 파악하는 방법에 대해 분실했습니다.

+0

그 쿼리로 얼마나 많은 행을 되 찾으려하십니까? – Aaron

답변

1

지도 및 기타 대상물을 만드는 일은 카산드라의 무거운 작업입니다. 이 맵이 크기 제한 시간에 제약을받지 않는 경우에는 매우 일반적입니다.

개인 경험지도 크기는 2 ~ 3 정도가 넘지 않아야합니다.

지도의 크기가 매우 제한되어 있거나 전혀 사용하지 않는 방식으로 데이터를 시도하고 모델을 만드십시오. 하나 개의 솔루션은 uuid 유형 transit_days를 변경하고 같은 것을 보이는 연결 테이블을 가지고 할 수 있습니다

CREATE TABLE arc_dynamic.transit_map_days_per ( transit_day_id uuid, data text PRIMARY KEY (transit_day_id) )

당신이 다음이 튜플의 목록이 표에서 "지도"를 조작 얻을 수있을 것를 그것은 당신의 목적에

+0

raam86, 정말 고맙습니다. 내가 불로 배우는 동안, 나의 다음 질문이 될 것입니다 : 그것이 실제로 문제인지 어떻게 알 수 있습니까? 내가 어디에서봤을 까? 흔적이 아무 것도 출력하지 않기 때문에, 내가 어디에서보아야하는지 알지도 못합니다. 내 cqlshrc 파일에서 client_timeout 값을 설정하여 클라이언트 시간 초과를 늘리려고 시도했지만 도움이되지 않았습니다. 내 추측은 연결하는 것이지 쿼리하는 것이지 확실하지는 않습니다. 그것이 효과가 있었고 행을 받았다고해도지도가 문제라는 단서가 있습니까? –

+0

가장 쉽게 문제가되는지도를 제거하고 어떤 일이 일어나는 지 확인할 수 있습니다. 항상 덤프를 스레드 할 수 있습니다. Cassandra 벤치 마크를위한 JVM 덤프 및 검색, 그들은 현재 기억하지 못하는 통계를위한 도구를 가지고 있습니다. http://aryanet.com/blog/cassandra-garbage-collector-tuning – raam86

+0

raam86 . 팀에서 다른 사람들이 발견 한 사실은지도에 14 개 이상의 항목이 없으며 문제는 실제로 우리가 사용중인 datastax 릴리스의 버그 였고 압축 및 복구를 통해 문제가 해결된다는 것입니다. 나는 당신의 반응에 감사 드리며, 더 많은 것을 가지고 놀 것입니다. 매일 더 많은 것을 배우십시오 ... –