Query optimization (original) (raw)
쿼리 최적화(Query optimization)는 수많은 관계형 데이터베이스 관리 시스템, 그리고 그래프 데이터베이스 등의 기타 데이터베이스의 기능이다. 쿼리 옵티마이저(query optimizer)는 잠재적인 쿼리 플랜을 고려함으로써 주어진 쿼리를 가장 효율적인 실행하는 방법을 정의하는 일을 시도한다. 일반적으로 쿼리 옵티마이저는 사용자에 의해 직접 접근이 불가능하다. 쿼리가 데이터베이스 서버에 제출되고 파서에 의해 파싱이 되면 이것들은 최적화가 발생하는 쿼리 옵티마이저에 전달하게 된다. 그러나 일부 데이터베이스 엔진은 힌트와 함께 쿼리 옵티마이저의 가이드를 허용한다.
Property | Value |
---|---|
dbo:abstract | Query optimization is a feature of many relational database management systems and other databases such as NoSQL and graph databases. The query optimizer attempts to determine the most efficient way to execute a given query by considering the possible query plans. Generally, the query optimizer cannot be accessed directly by users: once queries are submitted to the database server, and parsed by the parser, they are then passed to the query optimizer where optimization occurs. However, some database engines allow guiding the query optimizer with hints. A query is a request for information from a database. It can be as simple as "find the address of a person with Social Security number 123-45-6789," or more complex like "find the average salary of all the employed married men in California between the ages 30 to 39 who earn less than their spouses." The result of a query is generated by processing the rows in a database in a way that yields the requested information. Since database structures are complex, in most cases, and especially for not-very-simple queries, the needed data for a query can be collected from a database by accessing it in different ways, through different data-structures, and in different orders. Each different way typically requires different processing time. Processing times of the same query may have large variance, from a fraction of a second to hours, depending on the chosen method. The purpose of query optimization, which is an automated process, is to find the way to process a given query in minimum time. The large possible variance in time justifies performing query optimization, though finding the exact optimal query plan, among all possibilities, is typically very complex, time-consuming by itself, may be too costly, and often practically impossible. Thus query optimization typically tries to approximate the optimum by comparing several common-sense alternatives to provide in a reasonable time a "good enough" plan which typically does not deviate much from the best possible result. (en) L'optimisation de requête est une opération dans laquelle plusieurs plans d'exécution d'une requête SQL sont examinés pour en sélectionner le meilleur. L'estimation de leurs coûts dépend du temps d'exécution et du nombre de ressources utilisées pour y parvenir, elle se mesure en entrées-sorties. Typiquement les ressources coûteuses sont l'utilisation du processeur, la taille et la durée des tampons sur le disque dur, et les connexions entre les unités du parallélisme. Plusieurs SGBD comme Oracle et MySQL possèdent des fonctions permettant d'effectuer ces calculs, via un optimiseur. Il existe deux types d'optimisation : * Le (PEL), qui dépend de l'algèbre relationnelle. * Le (PEP) qui tient compte des index et de la taille des données. (fr) 쿼리 최적화(Query optimization)는 수많은 관계형 데이터베이스 관리 시스템, 그리고 그래프 데이터베이스 등의 기타 데이터베이스의 기능이다. 쿼리 옵티마이저(query optimizer)는 잠재적인 쿼리 플랜을 고려함으로써 주어진 쿼리를 가장 효율적인 실행하는 방법을 정의하는 일을 시도한다. 일반적으로 쿼리 옵티마이저는 사용자에 의해 직접 접근이 불가능하다. 쿼리가 데이터베이스 서버에 제출되고 파서에 의해 파싱이 되면 이것들은 최적화가 발생하는 쿼리 옵티마이저에 전달하게 된다. 그러나 일부 데이터베이스 엔진은 힌트와 함께 쿼리 옵티마이저의 가이드를 허용한다. (ko) クエリ最適化(クエリさいてきか、英: query optimization)は、多くのデータベース管理システム (DBMS) の持つ機能であり、クエリ(データに対する問い合わせ)を実行する最も効率的な方法を決定する。クエリオプティマイザ (query optimizer) とも言う。クエリオプティマイザは、入力されたクエリについて考えられるクエリ実行計画群を評価し、どれが最も効率的か決定する。コストに基づいたクエリオプティマイザでは、個々の計画のコストを見積もり、最もコストの低い計画を選ぶ。コストはクエリ実行時コストであり、入出力(I/O)操作数、CPU時間、その他から決定する。評価されるクエリ実行計画群は、可能なアクセス経路(例えば、インデックス検索、シーケンシャル検索)と結合アルゴリズム(例えば、、、入れ子ループ)の組み合わせから生成される。探索空間は入力されたSQLクエリによっては非常に大きくなる可能性もある。 クエリ最適化をユーザーが直接操作することはできない。クエリがデータベースサーバ (DBMS) に対して発行され、パーサーが構文解析すると、その結果がクエリオプティマイザに送られ、クエリ最適化が行われる。 関係代数 (関係モデル)#問い合わせ最適化も参照。 (ja) Оптимизация запросов — это 1) функция СУБД, осуществляющая поиск оптимального плана выполнения запросов из всех возможных для заданного запроса, 2) процесс изменения запроса и/или структуры БД с целью уменьшения использования вычислительных ресурсов при выполнении запроса. Один и тот же результат может быть получен СУБД различными способами (планами выполнения запросов), которые могут существенно отличаться как по затратам ресурсов, так и по времени выполнения. Задача оптимизации заключается в нахождении оптимального способа. В реляционной СУБД оптимальный план выполнения запроса — это такая последовательность применения операторов реляционной алгебры к исходным и промежуточным отношениям, которая для конкретного текущего состояния БД (её структуры и наполнения) может быть выполнена с минимальным использованием вычислительных ресурсов. В настоящее время известны две стратегии поиска оптимального плана: * грубой силы путём оценки всех перестановок соединяемых таблиц, используемых способов входа в таблицы и типов соединения (то есть полный перебор вариантов); * на основе генетического алгоритма путём оценки ограниченного числа перестановок. Также некоторые СУБД позволяют программисту вмешиваться в поиск оптимального плана в различной степени, от минимального влияния до полного и чёткого указания какой именно план запроса использовать. Планы выполнения запроса сравниваются исходя из множества факторов (реализации в различных СУБД отличаются), в том числе: * потенциальное число строк, извлекаемое из каждой таблицы, получаемое из статистики; * наличие индексов; * возможность выполнения слияний (merge-join); * способ чтения записей/блоков таблиц/индексов. В общем случае соединение выполняется вложенными циклами. Однако этот алгоритм может оказаться менее эффективен, чем специализированные алгоритмы. Например, если у сливаемых таблиц есть индексы по соединяемым полям, или одна или обе таблицы достаточно малы, чтобы быть отсортированными в памяти, то исследуется возможность выполнения слияний. (ru) Оптимізація запитів — це 1) функція СКБД, яка виконує пошук оптимального плана виконання запиту з усіх можливих для заданого запиту, 2) процес зміни запиту та/або структури БД в цілях зменшення використання розрахункових ресурсів при виконанні запиту. Один і той же результат може бути отриманий СКБД різноманітними способами (планами виконання запиту), які можуть суттєво відрізнятися як за затратами ресурсів, так і за часом виконання. Задача оптимізації полягає в знаходженні оптимального способу. В реляційній СКБД оптимальний план виконання запиту — це така послідовність застосування операторів реляційної алгебри до висхідних та проміжним відношенням, яка для конкретного поточного стану БД (її структури і наповнення) може бути виконана з мінімальним використанням обчислювальних ресурсів. В даний час відомі дві стратегії пошуку оптимального плану: * грубої сили шляхом оцінки всіх перестановок з'єднуваних таблиць, використовуваних способів входу в таблиці і типів з'єднання (тобто повний перебір варіантів); * на основі генетичного алгоритму шляхом оцінки обмеженого числа перестановок. Також деякі СКБД дозволяють програмісту втручатися в пошук оптимального плану різної міри, від мінімального впливу до повного і чіткого зазначення який саме план запиту використовувати. Плани виконання запиту порівнюються виходячи з безлічі чинників (реалізації в різних СКБД відрізняються), в тому числі: * потенційне число рядків, що витягають із кожної таблиці, одержуване з статистики; * наявність індексів; * можливість виконання (merge-join); * спосіб читання записів / блоків таблиць / індексів. У загальному випадку з'єднання виконується . Однак цей алгоритм може виявитися менш ефективним, ніж спеціалізовані алгоритми. Наприклад, якщо у зливаних таблиць є індекси по з'єднувальних полях, або одна або обидві таблиці досить малі, щоб бути відсортованими в пам'яті, то досліджується можливість виконання . (uk) |
dbo:wikiPageID | 3480761 (xsd:integer) |
dbo:wikiPageLength | 16146 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1117962191 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Sargable dbr:Index_(database) dbc:Database_algorithms dbr:Relational_algebra dbr:Relational_database_management_system dbr:Instruction_path_length dbr:GROUP_BY_(SQL) dbr:Software_feature dbr:SQL dbr:Query_rewriting dbr:Graph_database dbr:Tree_data_structure dbc:SQL dbr:Logical_conjunction dbr:Cloud_computing dbr:Query_plan dbr:Data_dictionary dbr:Database_administrator dbr:Hash_join dbr:Join_(SQL) dbr:Join_selection_factor dbr:NoSQL dbr:Database_management_system dbr:Dynamic_programming dbr:Cardinality dbr:Hint_(SQL) dbr:Relational_model dbc:Database_management_systems dbr:Social_Security_number dbr:Merge_join dbr:IBM dbr:Join_Selection_Factor dbr:IBM_System_R dbr:Histograms dbr:Predicate_(computer_programming) dbr:Exists_(SQL_operator) dbr:Flattened dbr:Index_scan dbr:Not_exists dbr:Product_join dbr:Select-project-join |
dbp:wikiPageUsesTemplate | dbt:Citation_needed dbt:More_footnotes dbt:Reflist dbt:Short_description dbt:Databases |
dcterms:subject | dbc:Database_algorithms dbc:SQL dbc:Database_management_systems |
gold:hypernym | dbr:Function |
rdf:type | yago:Abstraction100002137 yago:Act100030358 yago:Activity100407535 yago:Algorithm105847438 yago:Code106355894 yago:CodingSystem106353757 yago:Communication100033020 yago:DatabaseManagementSystem106588785 yago:Event100029378 yago:Procedure101023820 yago:PsychologicalFeature100023100 yago:Writing106359877 yago:WrittenCommunication106349220 yago:YagoPermanentlyLocatedEntity dbo:Disease yago:Rule105846932 yago:Software106566077 yago:WikicatDatabaseAlgorithms yago:WikicatDatabaseManagementSystems |
rdfs:comment | 쿼리 최적화(Query optimization)는 수많은 관계형 데이터베이스 관리 시스템, 그리고 그래프 데이터베이스 등의 기타 데이터베이스의 기능이다. 쿼리 옵티마이저(query optimizer)는 잠재적인 쿼리 플랜을 고려함으로써 주어진 쿼리를 가장 효율적인 실행하는 방법을 정의하는 일을 시도한다. 일반적으로 쿼리 옵티마이저는 사용자에 의해 직접 접근이 불가능하다. 쿼리가 데이터베이스 서버에 제출되고 파서에 의해 파싱이 되면 이것들은 최적화가 발생하는 쿼리 옵티마이저에 전달하게 된다. 그러나 일부 데이터베이스 엔진은 힌트와 함께 쿼리 옵티마이저의 가이드를 허용한다. (ko) クエリ最適化(クエリさいてきか、英: query optimization)は、多くのデータベース管理システム (DBMS) の持つ機能であり、クエリ(データに対する問い合わせ)を実行する最も効率的な方法を決定する。クエリオプティマイザ (query optimizer) とも言う。クエリオプティマイザは、入力されたクエリについて考えられるクエリ実行計画群を評価し、どれが最も効率的か決定する。コストに基づいたクエリオプティマイザでは、個々の計画のコストを見積もり、最もコストの低い計画を選ぶ。コストはクエリ実行時コストであり、入出力(I/O)操作数、CPU時間、その他から決定する。評価されるクエリ実行計画群は、可能なアクセス経路(例えば、インデックス検索、シーケンシャル検索)と結合アルゴリズム(例えば、、、入れ子ループ)の組み合わせから生成される。探索空間は入力されたSQLクエリによっては非常に大きくなる可能性もある。 クエリ最適化をユーザーが直接操作することはできない。クエリがデータベースサーバ (DBMS) に対して発行され、パーサーが構文解析すると、その結果がクエリオプティマイザに送られ、クエリ最適化が行われる。 関係代数 (関係モデル)#問い合わせ最適化も参照。 (ja) L'optimisation de requête est une opération dans laquelle plusieurs plans d'exécution d'une requête SQL sont examinés pour en sélectionner le meilleur. L'estimation de leurs coûts dépend du temps d'exécution et du nombre de ressources utilisées pour y parvenir, elle se mesure en entrées-sorties. Typiquement les ressources coûteuses sont l'utilisation du processeur, la taille et la durée des tampons sur le disque dur, et les connexions entre les unités du parallélisme. Plusieurs SGBD comme Oracle et MySQL possèdent des fonctions permettant d'effectuer ces calculs, via un optimiseur. (fr) Query optimization is a feature of many relational database management systems and other databases such as NoSQL and graph databases. The query optimizer attempts to determine the most efficient way to execute a given query by considering the possible query plans. Generally, the query optimizer cannot be accessed directly by users: once queries are submitted to the database server, and parsed by the parser, they are then passed to the query optimizer where optimization occurs. However, some database engines allow guiding the query optimizer with hints. (en) Оптимизация запросов — это 1) функция СУБД, осуществляющая поиск оптимального плана выполнения запросов из всех возможных для заданного запроса, 2) процесс изменения запроса и/или структуры БД с целью уменьшения использования вычислительных ресурсов при выполнении запроса. Один и тот же результат может быть получен СУБД различными способами (планами выполнения запросов), которые могут существенно отличаться как по затратам ресурсов, так и по времени выполнения. Задача оптимизации заключается в нахождении оптимального способа. В настоящее время известны две стратегии поиска оптимального плана: (ru) Оптимізація запитів — це 1) функція СКБД, яка виконує пошук оптимального плана виконання запиту з усіх можливих для заданого запиту, 2) процес зміни запиту та/або структури БД в цілях зменшення використання розрахункових ресурсів при виконанні запиту. Один і той же результат може бути отриманий СКБД різноманітними способами (планами виконання запиту), які можуть суттєво відрізнятися як за затратами ресурсів, так і за часом виконання. Задача оптимізації полягає в знаходженні оптимального способу. В даний час відомі дві стратегії пошуку оптимального плану: (uk) |
rdfs:label | Optimisation de requête (fr) 쿼리 최적화 (ko) クエリ最適化 (ja) Query optimization (en) Оптимизация запросов СУБД (ru) Оптимізація запитів (uk) |
owl:sameAs | freebase:Query optimization yago-res:Query optimization wikidata:Query optimization dbpedia-fr:Query optimization dbpedia-he:Query optimization dbpedia-ja:Query optimization dbpedia-ko:Query optimization dbpedia-ru:Query optimization dbpedia-sr:Query optimization dbpedia-uk:Query optimization https://global.dbpedia.org/id/2i8B1 |
prov:wasDerivedFrom | wikipedia-en:Query_optimization?oldid=1117962191&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Query_optimization |
is dbo:wikiPageRedirects of | dbr:Query_planner dbr:Query_optimizer dbr:Cost-based_query_optimizer dbr:Query_optimisation |
is dbo:wikiPageWikiLink of | dbr:Query_planner dbr:Sargable dbr:Monotonic_query dbr:Prepared_statement dbr:Joseph_M._Hellerstein dbr:Relational_algebra dbr:Query_optimizer dbr:Composite_Software dbr:Query_rewriting dbr:Georg_Gottlob dbr:Apache_Calcite dbr:Array_DBMS dbr:Feature-oriented_programming dbr:Paradox_(database) dbr:Peter_Baumann_(computer_scientist) dbr:Tree_decomposition dbr:Data_dictionary dbr:Database_theory dbr:Alberto_O._Mendelzon dbr:Amazon_DynamoDB dbr:Database dbr:Dimensional_modeling dbr:Jack_Minker dbr:Aaqua dbr:BioMart dbr:Real-time_path_planning dbr:Martin_L._Kersten dbr:IBM_i dbr:Michael_Stonebraker dbr:Microsoft_Access dbr:Microsoft_SQL_Server dbr:Ontotext_GraphDB dbr:Relational_calculus dbr:Patricia_Selinger dbr:IBM_System_R dbr:Norman_Paton dbr:Reverse_star_schema dbr:Outline_of_databases dbr:Cost-based_query_optimizer dbr:Query_optimisation |
is foaf:primaryTopic of | wikipedia-en:Query_optimization |