Optimiseur et les statistiques
Dans Couchbase Server Enterprise Edition, l'optimiseur basé sur les coûts permet au service de requête de créer le plan le plus efficace pour exécuter une requête. L'optimiseur basé sur les coûts analyse les statistiques de keyspace, les statistiques d'index et les statistiques de distribution pour sélectionner les index optimaux et créer le plan d'exécution de la requête.
Calculer les statistiques pour des champs
cbq> UPDATE STATISTICS FOR `ecole-bucket`.`ecole-scope`.etudiant(nom, prenom, region, ville); { "requestID": "33902b1b-5d77-4302-8c95-1102de2b8224", "signature": null, "results": [ ], "status": "success", "metrics": { "elapsedTime": "7.096286249s", "executionTime": "7.096160152s", "resultCount": 0, "resultSize": 0, "serviceLoad": 12 } }
Calculer les statistiques pour des index
cbq> UPDATE STATISTICS FOR INDEX default:`ecole-bucket`.`ecole-scope`.etudiant.etudiant_idx1; { "requestID": "4b8d1790-e6d0-403d-a2ee-9fdea7c60f85", "signature": null, "results": [ ], "status": "success", "metrics": { "elapsedTime": "192.491457ms", "executionTime": "192.34633ms", "resultCount": 0, "resultSize": 0, "serviceLoad": 12 } }
Calculer les statistiques pour plusieurs index
cbq> UPDATE STATISTICS FOR `ecole-bucket`.`ecole-scope`.etudiant INDEX (etudiant_idx2, etudiant_idx3); { "requestID": "ac0be9f7-cf83-4ac8-89dd-af40c3e70188", "signature": null, "results": [ ], "status": "success", "metrics": { "elapsedTime": "195.260917ms", "executionTime": "195.198902ms", "resultCount": 0, "resultSize": 0, "serviceLoad": 12 } }
Calculer les statistiques pour tous les index
cbq> UPDATE STATISTICS FOR `ecole-bucket`.`ecole-scope`.etudiant INDEX ALL; { "requestID": "2ea367c9-26c5-4f3e-ac75-9497602a9fec", "signature": null, "results": [ ], "status": "success", "metrics": { "elapsedTime": "291.399445ms", "executionTime": "291.304625ms", "resultCount": 0, "resultSize": 0, "serviceLoad": 12 } }
Supprimer les statistiques pour des champs
cbq> UPDATE STATISTICS FOR `ecole-bucket`.`ecole-scope`.etudiant DELETE (nom, prenom, region, ville); { "requestID": "35493bba-464f-4b83-b00c-3783e6a831aa", "signature": null, "results": [ ], "status": "success", "metrics": { "elapsedTime": "79.609165ms", "executionTime": "79.529055ms", "resultCount": 0, "resultSize": 0, "serviceLoad": 12 } }
Supprimer les statistiques pour tous les index
cbq> UPDATE STATISTICS FOR `ecole-bucket`.`ecole-scope`.etudiant DELETE ALL; { "requestID": "102bec48-112a-4d65-8081-702edde59b50", "signature": null, "results": [ ], "status": "success", "metrics": { "elapsedTime": "88.716801ms", "executionTime": "88.65375ms", "resultCount": 0, "resultSize": 0, "serviceLoad": 12 } }
Tips pour optimiser les perormances des requêtes analytiques
Définir le paralélisme d'exécution
SET `compiler.parallelism` "8";
Définir la taille mémoire pour les requêtes GROUP BY
SET `compiler.groupmemory` "64MB";
Définir la taille mémoire pour les tri
SET `compiler.sortmemory` "67108864";
Définir la taille mémoire pour les jointures
SET `compiler.joinmemory` "132000KB";