대화 데이터 증가 제한

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기9분
  • 작업이 수행될 때 대화 관련 테이블의 크기가 증가하여 시스템 성능에 영향을 줄 수 있습니다. 충분한 기록을 유지하면서 성능을 향상하려면 과거 데이터를 보관하고 진행 중인 대화에 사용되는 테이블을 정리하는 프로세스를 설정합니다.

    권장 활성화

    및 의 에이전트 채팅과도한 사용 가상 에이전트 과 관련된 데이터 증가를 제한하려면 다음 테이블에서 클리너 작업을 활성화합니다.

    테이블 이름 더 깨끗한 작업 요약 권장 사항
    AWA 에이전트 채널 가용성 [awa_agent_channel_availability] 90일이 지난 에이전트 채널 가용성 로그를 제거합니다 AWA . 정품 인증이 권장됩니다.
    AWA 에이전트 현재 상태[awa_agent_presence] 90일이 지난 에이전트 현재 상태 로그를 제거합니다 AWA . 정품 인증이 권장됩니다.
    AWA 에이전트 현재 상태 이력 [awa_agent_presence_history] 180일보다 오래된 에이전트 현재 상태 이력 로그를 제거합니다 AWA . 필요한 동작이 없으며 이미 활성화되어 있습니다.
    AWA 문서 크기 [awa_document_size] 90일이 지난 문서 크기 로그를 제거합니다 AWA . 정품 인증이 권장됩니다.
    AWA 인스턴스 통계 [awa_instance_stats] 60일이 지난 인스턴스 통계 로그를 제거합니다 AWA . 필요한 동작이 없으며 이미 활성화되어 있습니다.
    AWA 큐 통계 [awa_queue_stats] 60일보다 오래된 큐 통계 로그를 제거합니다 AWA . 필요한 동작이 없으며 이미 활성화되어 있습니다.
    AWA 서비스 채널 통계 [awa_service_channel_stats] 60일보다 오래된 서비스 채널 통계 로그를 제거합니다 AWA . 필요한 동작이 없으며 이미 활성화되어 있습니다.
    AWA 작업 항목 [awa_work_item] 수락되거나 취소되고 90일이 지난 작업 항목 로그를 제거합니다 AWA . 정품 인증이 권장됩니다.
    상호작용 [interaction] 90일이 지난 상호작용 로그를 제거합니다. 정품 인증이 권장됩니다.
    상호 작용 JSON Blob [interaction_json_blob] 60일보다 오래된 상호 작용 JSON Blob 로그를 제거합니다. 정품 인증이 권장됩니다.
    라이브 그룹 프로필 [live_group_profile] 60일이 지난 라이브 그룹 프로파일 로그를 제거합니다. 정품 인증이 권장됩니다.
    소비자 [sys_cs_consumer] 사용자 ID가 [user_id]=5136503cc611227c0183e96598c4f706이고 60일이 지난 소비자 로그를 제거합니다. 이미 활성으로 설정되어 있거나 조건에 이름 [이름] = 게스트 사용자를 추가합니다.
    소비자 장치 컨텍스트 [sys_cs_consumer_device_context] 참조 계단식 규칙 [reference_cascade_rule]=delete 규칙을 소비자 계정 [consumer_account] 열에 추가합니다. 아무 동작도 필요하지 않습니다.
    대화 [sys_cs_conversation] 60일이 지난 대화 로그를 제거합니다. 필요한 동작이 없으며 이미 활성화되어 있습니다.

    정리해야 할 테이블

    이러한 테이블은 장기 실행 인스턴스에서 수백만 개의 레코드로 증가할 수 있으므로 정리해야 합니다.

    • 에이전트 현재 상태 이력 [awa_agent_presence_history]
    • AWA 문서 크기 [awa_document_size]
    • AWA 작업 항목 [awa_work_item]
    • 소비자 [sys_cs_consumer]
    • 소비자 장치 컨텍스트 [sys_cs_consumer_device_context]
    • 대화 [sys_cs_conversation]
    • 상호작용 [interaction]
    • 상호 작용 JSON Blob [interaction_json_blob]
    • 라이브 그룹 프로필 [live_group_profile]

    대화 메시지 [sys_cs_message] 및 라이브 피드 메시지 [live_message] 테이블과 같은 다른 관련 테이블도 커질 수 있습니다. 이러한 테이블에는 앞의 목록에 있는 테이블을 정리할 때 부수적인 결과로 테이블을 정리하는 특성이 있습니다 reference_cascade_rule_delete .

    테이블에서 삭제해야 할 기록

    Auto Flush 구성을 사용하면 MatchfieldAge in seconds 필드를 선택할 수 있습니다. Matchfield 필드는 테이블의 날짜 열에 해당하고 Age in seconds 필드는 삭제가 트리거되는 시기를 나타냅니다. 레코드가 Matchfield 필드의 날짜가 Age in seconds 필드보다 더 오래된 시점에 도달하면 클리너가 레코드를 실행할 때 삭제합니다.

    이상적으로 Matchfield 필드는 기록이 활성 상태인 기간을 나타내야 합니다. 다음 표의 열은 해당 테이블의 Matchfield 필드와 잘 작동하며, 표시된 경우 조건 필드에 추가 조건이 있습니다.

    테이블 컬럼이 인덱싱되었나요? 추가 조건
    AWA 에이전트 채널 가용성 [awa_agent_channel_availability] 업데이트됨(sys_updated_on) 아니요 agent.active=거짓
    AWA 에이전트 현재 상태[awa_agent_presence] 업데이트됨(sys_updated_on) 아니요
    AWA 에이전트 현재 상태 이력 [awa_agent_presence_history] 업데이트됨(sys_updated_on)
    AWA 문서 크기 [awa_document_size] 업데이트됨(sys_updated_on) 아니요
    AWA 작업 항목 [awa_work_item] 업데이트됨(sys_updated_on) stateIN수락됨, 취소됨
    상호작용 [interaction] 업데이트됨(sys_updated_on)
    상호 작용 JSON Blob [interaction_json_blob] 업데이트됨(sys_updated_on) 아니요
    라이브 그룹 프로필 [live_group_profile] 업데이트됨(sys_updated_on) 아니요
    소비자 [sys_cs_consumer] 업데이트됨(sys_updated_on) 아니요 name=게스트 사용자
    대화 [sys_cs_conversation] 업데이트됨(sys_updated_on) 아니요

    interaction.closed_at 및 sys_cs_conversation.conversation_completed는 오류가 있는 대화 및 일부 종결된 상호 작용에 대한 값이 없기 때문에 Matchfield 필드에 적합한 옵션이 아닙니다. 적절한 상태 변경이 발생할 때 이 날짜가 비어 있는 경우 이 날짜를 설정하는 비즈니스 규칙을 사용하여 격차를 해소할 수 있지만 간단히 하기 위해 이러한 테이블에 sys_updated_on 필드를 사용합니다.

    다른 테이블은 종결된 채팅만 삭제되도록 하는 상태 필드의 조건으로 제한될 수 있습니다. 일반적으로 상호 작용은 며칠 이상 열어 두어서는 안 되므로 마지막 업데이트 후 쿼리를 더 간단하고 더 빠르게 실행하기 위해 이러한 조건을 생략할 수 있습니다. 케이스와 같이 더 오래 실행되는 작업도 표시되기 때문에 awa_work_item 테이블의 상태가 더 중요할 수 있습니다.

    sys_cs_consumer 테이블의 문제는 일반적으로 새 대화를 기존 사용자와 일치시키기 위해 이러한 레코드를 유지할 수 있지만 게스트 사용자의 경우 모든 대화에 대해 다른 레코드가 생성된다는 것입니다.

    sys_cs_consumer_device_context 테이블의 경우 CS 소비자 계정 [sys_cs_consumer_account] 테이블에 대한 참조(자체에 sys_cs_consumer 테이블에 대한 참조가 있음)가 있지만 참조가 reference_cascade_rule=delete로 표시되지 않습니다. 이 규칙을 소비자 계정 참조에 추가하는 것이 좋습니다. 이렇게 하면 클리너가 sys_cs_consumer 및 sys_cs_consumer_account 테이블의 기록을 삭제할 때 해당 기록도 삭제됩니다.

    awa_agent_presence 및 awa_agent_channel_availability 테이블은 다른 테이블과 같은 방식으로 채팅당 증가하지 않지만 할당 엔진에서 정기적으로 액세스하므로 더 이상 활성 상태가 아닌 사용자의 부실 항목으로 끝날 수 있습니다. 오랫동안 사용하지 않은 항목도 여기에서 정리해야 합니다. awa_agent_channel_availability 열은 자주 업데이트되지 않을 수 있으므로 각별히 주의해야 합니다. 이러한 이유로, 비활성 사용자와 관련된 기록만 제거할 수 있도록 해당 클리너에 추가 조건을 추가해야 합니다.

    기록을 안전하게 삭제할 수 있는 경우

    레코드를 안전하게 삭제할 수 있는 시기를 결정할 때 고려해야 할 몇 가지 사항은 다음과 같습니다.

    • 진행 중인 대화에 대한 기록을 삭제하지 마십시오.

      세션 기반 채팅 대화의 경우 연령 임계값은 며칠에 불과합니다. SMS/메시징 대화가 포함된 경우 연령 기준이 몇 주 이상으로 연장될 수 있습니다. 이를 평가하는 한 가지 방법은 com.glide.cs.*_idle_timeout 양식의 모든 속성을 살펴보고 값이 가장 높은 속성을 찾는 것입니다.

    • 최근 활동에 대한 대시보드/보고서에 기여하는 기록을 삭제하지 마십시오.

      상호 작용-고급 분석 대시보드에는 AWA 3개월 전으로 돌아가는 주간 추세 표시기가 포함되어 있습니다. 이를 완벽하게 지원하려면 최소 90일 동안 상호 작용 및 awa_work_item 기록을 보관해야 합니다.

    • 나중에 참조하기 위해 데이터를 보관해야 하는 경우 기록을 삭제하지 마십시오.

      이 작업의 타이밍은 필요한 보관을 수행하기 위해 추가되는 사용자 지정 논리의 타이밍에 따라 달라집니다. 결정적인 요소가 되지 않을 만큼 충분히 일찍 실행되도록 설정할 수 있어야 합니다.

    위의 사항을 고려할 때 다음 기간(초) 임계값을 권장합니다.
    • 상호 작용, awa_work_item: 7776000(90일 - 그러나 주간 추세 표시기를 사용하지 않거나 더 짧은 시간으로 전환 확인을 설정하려는 경우 줄일 수 있음).
    • sys_cs_conversation, live_group_profile, interaction_json_blob, sys_cs_consumer: 2592000(30일) 또는 5184000(60일)

    성능 고려 사항

    누락된 테이블에 sys_updated_on 인덱스가 필요합니까?

    테스트는 12,000,000+개의 상호작용이 있는 인스턴스에서 실행되었으며, sys_updated_on 필드(상호작용)에 인덱스가 있는 테이블 하나와 그렇지 않은 테이블(interaction_json_blob)에 대해 테이블 정리가 구성되었습니다. 두 경우 모두 초기 및 후속 실행의 경우 삭제에 소요된 시간(잠재적으로 몇 분)이 레코드를 쿼리하는 데 소요된 시간(2초 이하)보다 훨씬 많았습니다. 이 결과가 주어지면 성능에 미치는 영향이 최소화되므로 테이블에 인덱스를 추가할 필요가 없습니다.

    초기 및 반복되는 테이블 클리너 작업은 언제 실행해야 합니까?

    일반적으로 테이블 클리너 sys_trigger는 시간당 한 번씩 실행됩니다. 오래된 레코드가 많은 테이블에 하나 이상의 클리너가 설정된 경우 첫 번째 실행 중에 수행되는 삭제 수가 매우 많을 수 있으며 시스템에 추가 로드가 발생할 수 있습니다. 테이블 정리 구성을 조정하고 활성화하기 전에 이 테이블 클리너 일정을 임시로 변경하여 업무 외 시간(일반적으로 시스템 부하가 낮은 시간)에 다음 실행이 수행되도록 합니다.

    쉬는 시간이 없다면 도움이 될 수 있는 테이블 클리너를 관리하는 몇 가지 속성이 있습니다. 특히 glide.db.tablecleaner.chunk_delete_max_time_spent 는 클리너가 단일 실행 중에 레코드를 일괄 삭제하는 데 소요되는 시간을 제한합니다. 값은 초 단위로 지정되며 기본값은 1200(20분)입니다. 이는 기본 시스템 설정에서 테이블 클리너가 최대 20분 동안 매시간 실행됨을 의미합니다(참고로, 한 테스트 동안 계단식 삭제를 포함하여 20분 동안 약 400,000개의 상호작용이 삭제될 수 있음). 매시간 20분이 너무 적극적이면 속성 가치를 낮출 수 있습니다.