반응형
MariaDB Analyze FORMAT=JSON 출력에서 전체 시간을 계산할 수 없습니다.
MariaDB에서 몇 가지 쿼리를 최적화하려고 하는데 ANALIZE FORMAT=JSON 기능이 매우 유용하다는 것을 알게 되었습니다.하지만 어떤 복합적인 조인의 경우, 시간이 맞지 않거나, 그에 근접하는 사례들을 접하게 됩니다.
작동할 때의 예로, 하나의 쿼리의 경우 query_block r_total_time_ms가 약 239ms였습니다. 쿼리 자체에는 11개의 테이블이 포함되어 있었고, 그 11개 중 하나는 거의 227ms를 차지하여 쿼리에 소요된 시간의 대부분을 차지했습니다.인덱스를 변경하는 과정이 분명히 있었고, 이를 통해 해당 요소를 1ms 미만으로 줄였고, 총 쿼리 시간은 1ms를 조금 넘었습니다.
그러나 다른 경우에는 쿼리_block r_total_time_ms가 163ms를 약간 넘습니다. 쿼리에는 9개의 테이블 및/또는 하위 쿼리가 포함되며 구성 요소 중 가장 높은 r_total_time_ms가 15ms를 조금 넘습니다.이 모든 구성 요소의 합계는 약 25ms입니다.그렇다면 나머지 시간은 어디에서 보내는 것일까요?다른 140달러 짜리들은 뭘 하고 있는 거지?구분할 수 있는 방법이 있다면, 그게 뭔지 모르겠습니다.
다음은 제가 애를 먹고 있는 분석 결과입니다.
ANALYZE
{
"query_block": {
"select_id": 1,
"r_loops": 1,
"r_total_time_ms": 163.18,
"filesort": {
"sort_key": "tcontent.lastUpdate",
"r_loops": 1,
"r_total_time_ms": 0.0147,
"r_limit": 20,
"r_used_priority_queue": false,
"r_output_rows": 2,
"r_buffer_size": "252",
"temporary_table": {
"table": {
"table_name": "tcontent",
"access_type": "index_merge",
"possible_keys": [
"IX_TContent",
"IX_TContent_1",
"IX_TContent_2",
"IX_TContent_5",
"IX_tcontent_mobileExclude",
"IX_tcontent_displaystart",
"IX_tcontent_displaystop",
"IX_tcontent_approved",
"IX_tcontent_active",
"IX_tcontent_display",
"IX_tcontent_type",
"ntID_Type_subType_Display_DisplayStart_DisplayStop_mobileExclude",
"ix_tcontent_SiteID_Active_Filename_Type"
],
"key_length": "2,2,2,2,2,78,106",
"index_merge": {
"union": {
"range": {
"key": "IX_tcontent_display",
"used_key_parts": ["Display"]
},
"range": {
"key": "IX_tcontent_display",
"used_key_parts": ["Display"]
},
"intersect": {
"range": {
"key": "IX_tcontent_approved",
"used_key_parts": ["Approved"]
},
"range": {
"key": "IX_tcontent_active",
"used_key_parts": ["Active"]
},
"range": {
"key": "IX_tcontent_display",
"used_key_parts": ["Display"]
},
"range": {
"key": "IX_TContent_2",
"used_key_parts": ["SiteID"]
},
"range": {
"key": "IX_TContent_5",
"used_key_parts": ["ModuleID"]
}
}
}
},
"r_loops": 1,
"rows": 2583,
"r_rows": 3966,
"r_total_time_ms": 15.183,
"filtered": 96.129,
"r_filtered": 98.664,
"attached_condition": "tcontent.Active = 1 and tcontent.Approved = 1 and tcontent.searchExclude = 0 and tcontent.SiteID = 'CAE' and tcontent.ModuleID = '00000000000000000000000000000000000' and tcontent.ContentID <> '00000000000000000000000000000000001' and tcontent.`Type` <> 'Module' and (tcontent.Display = 1 or tcontent.Display = 2 and (tcontent.DisplayStart <= '2018-01-09 15:17:00' and (tcontent.DisplayStop >= '2018-01-09 15:17:00' or tcontent.DisplayStop is null) or tcontent.DisplayStart <= '2019-01-09 15:17:00' and (tcontent.DisplayStop >= '2018-01-09 15:17:00' or tcontent.DisplayStop is null))) and (tcontent.mobileExclude is null or tcontent.mobileExclude in (0,1))"
},
"table": {
"table_name": "<subquery2>",
"access_type": "eq_ref",
"possible_keys": ["distinct_key"],
"key": "distinct_key",
"key_length": "105",
"used_key_parts": ["contentHistID"],
"ref": ["func"],
"r_loops": 3913,
"rows": 1,
"r_rows": 5.1e-4,
"r_total_time_ms": 6.2577,
"filtered": 100,
"r_filtered": 100,
"attached_condition": "tcontent.Display = 1 or tcontent.Display = 2 and (tcontent.DisplayStart <= '2018-01-09 15:17:00' and (tcontent.DisplayStop >= '2018-01-09 15:17:00' or tcontent.DisplayStop is null) or tcontent.DisplayStart <= '2019-01-09 15:17:00' and (tcontent.DisplayStop >= '2018-01-09 15:17:00' or tcontent.DisplayStop is null))",
"materialized": {
"unique": 1,
"query_block": {
"select_id": 2,
"table": {
"table_name": "tcontentcategories",
"access_type": "ALL",
"possible_keys": ["PRIMARY"],
"r_loops": 1,
"rows": 166,
"r_rows": 166,
"r_total_time_ms": 0.2246,
"filtered": 100,
"r_filtered": 0.6024,
"attached_condition": "tcontentcategories.path like '%D3386B7B-5056-8740-7CA949A8C39FACF3%'"
},
"table": {
"table_name": "tcontentcategoryassign",
"access_type": "ref",
"possible_keys": [
"PRIMARY",
"IX_tcontentcategoryassign_categoryID"
],
"key": "IX_tcontentcategoryassign_categoryID",
"key_length": "105",
"used_key_parts": ["categoryID"],
"ref": ["dbMuraCMS.tcontentcategories.categoryID"],
"r_loops": 1,
"rows": 53,
"r_rows": 33,
"r_total_time_ms": 0.0413,
"filtered": 100,
"r_filtered": 100,
"using_index": true
}
}
}
},
"table": {
"table_name": "tfiles",
"access_type": "eq_ref",
"possible_keys": ["PRIMARY"],
"key": "PRIMARY",
"key_length": "105",
"used_key_parts": ["fileID"],
"ref": ["dbMuraCMS.tcontent.FileID"],
"r_loops": 2,
"rows": 1,
"r_rows": 1,
"r_total_time_ms": 0.0109,
"filtered": 100,
"r_filtered": 100,
"attached_condition": "trigcond(trigcond(tcontent.FileID is not null))"
},
"table": {
"table_name": "tcontentstats",
"access_type": "eq_ref",
"possible_keys": ["PRIMARY"],
"key": "PRIMARY",
"key_length": "182",
"used_key_parts": ["contentID", "siteID"],
"ref": ["dbMuraCMS.tcontent.ContentID", "dbMuraCMS.tcontent.SiteID"],
"r_loops": 2,
"rows": 1,
"r_rows": 0,
"r_total_time_ms": 0.0127,
"filtered": 100,
"r_filtered": 100,
"attached_condition": "trigcond(trigcond(tcontent.ContentID is not null and tcontent.SiteID is not null))"
},
"table": {
"table_name": "tparent",
"access_type": "ref",
"possible_keys": [
"IX_TContent",
"IX_TContent_2",
"IX_tcontent_active",
"ntID_Type_subType_Display_DisplayStart_DisplayStop_mobileExclude",
"ix_tcontent_SiteID_Active_Filename_Type"
],
"key": "IX_TContent",
"key_length": "106",
"used_key_parts": ["ContentID"],
"ref": ["dbMuraCMS.tcontent.ParentID"],
"r_loops": 2,
"rows": 1,
"r_rows": 238,
"r_total_time_ms": 1.5375,
"filtered": 100,
"r_filtered": 0.4202,
"attached_condition": "trigcond(tcontent.Display = 1 or tcontent.Display = 2 and (tparent.`Type` <> 'Calendar' and tcontent.DisplayStart <= '2018-01-09 15:17:00' and (tcontent.DisplayStop >= '2018-01-09 15:17:00' or tcontent.DisplayStop is null) or tparent.`Type` = 'Calendar' and tcontent.DisplayStart <= '2019-01-09 15:17:00' and (tcontent.DisplayStop >= '2018-01-09 15:17:00' or tcontent.DisplayStop is null))) and trigcond(tparent.SiteID = tcontent.SiteID and tparent.Active = 1 and trigcond(tcontent.ParentID is not null))"
},
"table": {
"table_name": "tcontentfilemetadata",
"access_type": "ALL",
"possible_keys": [
"IX_tcontentfilemetadata_contenthistid",
"IX_tcontentfilemetadata_fileid"
],
"r_loops": 2,
"rows": 1,
"r_rows": 0,
"r_total_time_ms": 0.0045,
"filtered": 100,
"r_filtered": 100,
"attached_condition": "trigcond(tcontentfilemetadata.fileid = tcontent.FileID and tcontentfilemetadata.contenthistid = tcontent.ContentHistID)"
}
}
}
}
}
언급URL : https://stackoverflow.com/questions/48176711/cant-account-for-full-time-in-mariadb-analyze-format-json-output
반응형
'programing' 카테고리의 다른 글
브라우저 뒤로가기 버튼을 사용할 때 페이지를 강제로 다시 로드하는 방법은? (0) | 2023.11.07 |
---|---|
특정 URL에 대해 Spring Security 3.2 CSRF 사용 안 함 (0) | 2023.11.07 |
1비트 길이의 데이터 타입을 C로 생성할 수 있습니까? (0) | 2023.11.07 |
각도 2에서 colspan이 알려진 네이티브 속성이 아닌 이유는 무엇입니까? (0) | 2023.11.07 |
Python, 디렉토리 문자열에 후행 슬래시 추가, os 독립적으로 (0) | 2023.11.07 |