xtrntr
01/06/2022, 12:01 PM# <https://docs.pinot.apache.org/operators/tutorials/deployment-pinot-on-kubernetes#jvm-setting>
resources:
requests:
cpu: 4
memory: 10G
limits:
cpu: 4
memory: 10G
how do i diagnose the cause of slow queries based on the logs?
Processed requestId=93,table=eventsv2-2021-09_OFFLINE,segments(queried/processed/matched/consuming)=10/10/10/-1,schedulerWaitMs=0,reqDeserMs=1,totalExecMs=4883,resSerMs=1,totalTimeMs=4885,minConsumingFreshnessMs=-1,broker=Broker_pinot-broker-0.pinot-broker-headless.pinot.svc.cluster.local_8099,numDocsScanned=1194957,scanInFilter=422644416,scanPostFilter=1194957,sched=fcfs,threadCpuTimeNs=0
...
Processed requestId=93,table=eventsv2-2021-09_OFFLINE,segments(queried/processed/matched/consuming)=10/10/10/-1,schedulerWaitMs=0,reqDeserMs=1,totalExecMs=4414,resSerMs=0,totalTimeMs=4415,minConsumingFreshnessMs=-1,broker=Broker_pinot-broker-0.pinot-broker-headless.pinot.svc.cluster.local_8099,numDocsScanned=1156729,scanInFilter=422867040,scanPostFilter=1156729,sched=fcfs,threadCpuTimeNs=0
the offending query is:
SELECT user, COUNT(*) FROM "eventsv2-2021-09" WHERE IN_SUBQUERY(cell, 'SELECT ID_SET(location) FROM dimTable WHERE id IN (...)') = 1 GROUP BY user HAVING COUNT(user) >= 20 LIMIT 10000000xtrntr
01/06/2022, 12:12 PMdictionary, forward-index, inverted-index indexes on columns user and cellxtrntr
01/06/2022, 12:16 PMTable Name: eventsv2-2021-09_OFFLINE
Reported Size: 41665794922
Table Name: dimTable_OFFLINE
Reported Size: 550871750Richard Startin
01/06/2022, 2:16 PMRichard Startin
01/06/2022, 2:18 PMxtrntr
01/06/2022, 11:06 PMxtrntr
01/06/2022, 11:06 PMSELECT DISTINCT(COUNT(user)) FROM "eventsv2-2021-09" WHERE IN_SUBQUERY(cell, 'SELECT ID_SET(location) FROM dimTable WHERE id IN (...)') = 1 LIMIT 10000000
{
"numServersQueried": 10,
"numServersResponded": 10,
"numSegmentsQueried": 100,
"numSegmentsProcessed": 100,
"numSegmentsMatched": 100,
"numConsumingSegmentsQueried": 0,
"numDocsScanned": 11651626,
"numEntriesScannedInFilter": 4221307776,
"numEntriesScannedPostFilter": 11651626,
"numGroupsLimitReached": false,
"totalDocs": 4221307776,
"timeUsedMs": 8334,
}xtrntr
01/06/2022, 11:07 PMxtrntr
01/06/2022, 11:07 PMRichard Startin
01/06/2022, 11:12 PMxtrntr
01/06/2022, 11:15 PMxtrntr
01/06/2022, 11:15 PMSELECT user, COUNT(*) FROM "eventsv2-2021-09" WHERE IN_SUBQUERY(cell, 'SELECT ID_SET(location) FROM dimTable WHERE id IN (...)') = 1 GROUP BY user HAVING COUNT(user) >= 20 LIMIT 10000000Richard Startin
01/06/2022, 11:15 PMRichard Startin
01/06/2022, 11:16 PMjcmd <server pid> JFR.start duration=60s filename=slowquery.jfr settings=profilextrntr
01/06/2022, 11:16 PMxtrntr
01/06/2022, 11:16 PMRichard Startin
01/06/2022, 11:17 PMxtrntr
01/06/2022, 11:17 PMRichard Startin
01/06/2022, 11:17 PMxtrntr
01/06/2022, 11:17 PMxtrntr
01/06/2022, 11:17 PMRichard Startin
01/06/2022, 11:19 PMkubectl exec -it -n <namespace> <pod-name> -- bash then run that jcmd commandxtrntr
01/06/2022, 11:20 PMxtrntr
01/06/2022, 11:20 PMxtrntr
01/06/2022, 11:20 PMxtrntr
01/06/2022, 11:20 PMRichard Startin
01/06/2022, 11:21 PMxtrntr
01/06/2022, 11:21 PMRichard Startin
01/06/2022, 11:21 PMDocIdSetOperator ) which might suggest an inverted index which isn't very selectivextrntr
01/06/2022, 11:22 PMi haveindexes on columns user and celldictionary, forward-index, inverted-index
Richard Startin
01/06/2022, 11:22 PMexplainxtrntr
01/06/2022, 11:24 PMRichard Startin
01/06/2022, 11:24 PMBitmapBasedFilterOperatorRichard Startin
01/06/2022, 11:24 PMxtrntr
01/06/2022, 11:25 PMProcessingException(errorCode:150, message:PQLParsingError:
org.apache.pinot.sql.parsers.SqlCompilationException: Caught exception while parsing query: EXPLAIN SELECT userid_int, COUNT(*) FROM "eventsv2-2021-09" WHERE IN_SUBQUERY(cell_id, 'SELECT ID_SET(location) ...
at org.apache.pinot.sql.parsers.CalciteSqlParser.compileCalciteSqlToPinotQuery(CalciteSqlParser.java:302)
at org.apache.pinot.sql.parsers.CalciteSqlParser.compileToPinotQuery(CalciteSqlParser.java:106)
at org.apache.pinot.sql.parsers.CalciteSqlCompiler.compileToBrokerRequest(CalciteSqlCompiler.java:35)
at org.apache.pinot.controller.api.resources.PinotQueryResource.getQueryResponse(PinotQueryResource.java:166)
...
Caused by: org.apache.calcite.sql.parser.SqlParseException: Encountered "EXPLAIN SELECT" at line 1, column 1.
Was expecting one of:
"SET" ...
"WITH" ...
"+" ...
...
Caused by: org.apache.calcite.sql.parser.babel.ParseException: Encountered "EXPLAIN SELECT" at line 1, column 1.
Was expecting one of:
"SET" ...
"WITH" ...
"+" ...)Richard Startin
01/06/2022, 11:25 PMEXPLAIN PLAN FORxtrntr
01/06/2022, 11:26 PMjava.lang.ClassCastException: class org.apache.calcite.sql.SqlExplain cannot be cast to class org.apache.calcite.sql.SqlSelect (org.apache.calcite.sql.SqlExplain and org.apache.calcite.sql.SqlSelect are in unnamed module of loader 'app')Richard Startin
01/06/2022, 11:26 PMxtrntr
01/06/2022, 11:27 PMxtrntr
01/06/2022, 11:27 PMRichard Startin
01/06/2022, 11:27 PMxtrntr
01/06/2022, 11:29 PMRichard Startin
01/06/2022, 11:30 PM"numDocsScanned": 11651626,
"numEntriesScannedInFilter": 4221307776,
"numEntriesScannedPostFilter": 11651626,xtrntr
01/06/2022, 11:32 PMRichard Startin
01/06/2022, 11:33 PMxtrntr
01/06/2022, 11:39 PMcell, and i have the indexes for cellxtrntr
01/06/2022, 11:39 PMxtrntr
01/06/2022, 11:41 PMRichard Startin
01/06/2022, 11:44 PMRichard Startin
01/06/2022, 11:45 PMint[] intValues = _transformFunction.transformToIntValuesSV(projectionBlock);
for (int i = 0; i < length; i++) {
_results[i] = _idSet.contains(intValues[i]) ? 1 : 0;
}
break;xtrntr
01/06/2022, 11:46 PMRichard Startin
01/06/2022, 11:46 PMRichard Startin
01/06/2022, 11:46 PMRichard Startin
01/06/2022, 11:47 PMRichard Startin
01/06/2022, 11:47 PMxtrntr
01/06/2022, 11:48 PMxtrntr
01/06/2022, 11:48 PMxtrntr
01/06/2022, 11:48 PMRichard Startin
01/06/2022, 11:50 PMid?xtrntr
01/06/2022, 11:52 PMdictionary forward-index inverted-indexRichard Startin
01/07/2022, 8:58 AMxtrntr
01/07/2022, 9:12 AMxtrntr
01/07/2022, 9:12 AMxtrntr
01/07/2022, 9:13 AM"tableIndexConfig": {
"rangeIndexVersion": 1,
"autoGeneratedInvertedIndex": false,
"createInvertedIndexDuringSegmentGeneration": false,
"sortedColumn": [
"id"
],
"loadMode": "MMAP",
"enableDefaultStarTree": false,
"enableDynamicStarTreeCreation": false,
"aggregateMetrics": false,
"nullHandlingEnabled": false
},
but index status shows:Richard Startin
01/07/2022, 9:18 AMRichard Startin
01/07/2022, 9:19 AMxtrntr
01/07/2022, 9:20 AMxtrntr
01/07/2022, 9:21 AMcell in my fact table before i apply it as a predicateRichard Startin
01/07/2022, 9:26 AMxtrntr
01/07/2022, 9:30 AMxtrntr
01/07/2022, 9:30 AMxtrntr
01/07/2022, 9:31 AMMayank
IN_ID_SET transform function being slowxtrntr
01/08/2022, 3:50 PMactually it's not using the inverted index because there is noBitmapBasedFilterOperator