대화 데이터 증가 제한

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 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일이 지난 소비자 로그를 제거합니다. 이미 활성으로 설정되어 있거나 Name [name] = Guest User를 조건에 추가합니다.
    소비자 장치 컨텍스트 [sys_cs_consumer_device_context] 참조 계단식 규칙 [reference_cascade_rule]=삭제 규칙을 소비자 계정 [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(자동 플러시) 구성을 사용하면 Matchfield(일치 필드 ) 및 Age 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) stateINaccepted,cancelled
    상호작용 [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=손님 사용자 (Automatic Translation)
    대화 [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 형식의 모든 속성을 살펴보고 값이 가장 높은 속성을 찾는 것입니다.

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

      for Interactions-Advanced Analytics 대시보드에는 AWA 3개월 전을 돌아보는 주간 추세 표시기가 포함되어 있습니다. 이를 완벽하게 지원하려면 상호작용 및 awa_work_item 기록을 90일 이상 보관해야 합니다.

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

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

    위의 사항을 고려할 때 다음과 같은 연령(초) 임계값이 권장됩니다.
    • 상호 작용, 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분이 너무 공격적이면 속성 값을 줄일 수 있습니다.