|
|
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Вывел построенный план запросов сейчас (когда все летает) - он совершенно отличается от того который был вчера, и индексы используюются везде.... Ничего не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 10:52 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
MasterZiv iLLer wrote: > P.S.: Кстати, присутствие всех данных в кэше может сыграть злую шутку > именно тем, что сервер может выбирать перебор всей таблицы из памяти, а > не чтение индекса с диска. Нет, не может. Наполненность кэша не учитывается при составлении плана. http://infocenter.sybase.com/help/topic/com.sybase.dc20023_1251/html/optimizer/X25495.htm http://infocenter.sybase.com/help/topic/com.sybase.dc20023_1251/html/optimizer/X33106.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 11:45 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
MasterZiv Нет, не может. Наполненность кэша не учитывается при составлении плана. Значит я ошибся, и подходы АСА и АСЕ тут расходятся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 15:34 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
up http://infocenter.sybase.com/help/topic/com.sybase.dc20023_1251/html/optimizer/X25495.htm http://infocenter.sybase.com/help/topic/com.sybase.dc20023_1251/html/optimizer/X33106.htm Ну вот, собсно мои подозрения подтверждаются. Я мыслил логически, основываясь на том, что любая более-менее серьезная СУБД должна расчитывать стоимость выполнения запроса и выбирать план с наименьшей стоимостью. А стоимость, как известно, очень сильно зависит от I/O, и как следствие ее сложно подсчитать не зная и пренебрегая объемом нужных данных в кэше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 15:39 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
В любой момент времени в кэше будут разные данные. может 10% нужных данных в кэше, а через 5мин 50%, или вообще 0%. От сюда вопрос какой план должен закешироваться в процедурном кэше(основываясь на 10% или 50%, а может 0%)? если кэш данных не статичен и постоянно изменяем, а план зависит от наполненности кэша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 16:31 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
И еще больше не уверен, что оптимизатор сделает "тэйбл скан", а не пойдет по подходящему индексу, основываясь на том что все данные в кэше(случай с маленькими таблицами не берем). Ему все равно будет выгодней идти по индексу, чем по всей таблице. Можно конечно допустить, что данные в кэше есть, страниц индекса нет, но все равно будет выгодней по индексу(ИМХО). И если такая ситуация все же встретилась, то это проблема организации кэша! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 16:55 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
cherrex_DenЕму все равно будет выгодней идти по индексу, чем по всей таблице. зависит от селективности индекса и размера таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 18:23 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
komrad, Согласен! Но это не зависит от наполненности кэша! Я считаю что кэш данных, это достаточно динамично изменяемая штука. Если бы была такая зависимость существовала, то тогда отпадает надобность в процедурном (или стэйтмент) кэше! Скорее всего, оптимизатор учитывает какую-то среднестатистическую информацию о наполненности кэша! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 18:42 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
cherrex_Denслучай с маленькими таблицами не берем Дело в том, что понятия "маленькой таблицы" для ЭВМ и СУБД не существует. Она оперирует сухими, безжизненными и оторванными от реальности цифрами. Любая мат.модель лишь приблизительно описывает поведение реальности. И именно основываясь на законах сравнения этих цифр оптимизатор и приходит к выводу, что выгоднее, а что нет. А вот в результате чего вдруг эти самые цифры стали плохо отражать реальность и модель расчета стоимости дает сбой, вот это и есть вопрос. Может переполнился счетчик какой-то внутренний и БОЛЬШАЯ таблица для оптимизатора превратилась в маленькую?! Вот он и решил перелопатить по-быстрому кэш. А может вдруг по какой-то причине стоимость I/O подскочила? И одна операция ввода-вывода стала стоить как футбольная комманда? Тут оптимизатор тоже совершенно честно выбрал путь наименьшего сопротивления. Либо статистика по данным испортилась, либо слишком неочевидный запрос для оптимизатора, либо... Гадать можно долго. Алгоритмы оптимизатора скрыты и для нас недоступны. В таких случаях есть возможность: 1) Упростить/разбить/видоизменить запросы 2) Установить подсказки оптимизатору, если разработчик на 100% уверен в гарантированной работоспособности своих подсказок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 18:44 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
cherrex_DenЯ считаю что кэш данных, это достаточно динамично изменяемая штука. Если бы была такая зависимость существовала, то тогда отпадает надобность в процедурном (или стэйтмент) кэше! Скорее всего, оптимизатор учитывает какую-то среднестатистическую информацию о наполненности кэша! Если бы кэш был размером с ноготь мизинца, то неудивительно, что данные в нем не задерживаются и вымываются с завидным постоянством и скоростью. А если кэш немеряный?)) И поток запросов юзает одно и тоже массивное и теплое, лежащее сначала на диске, а потом и в кэше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 18:46 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Могу ответственно заявить, что индексы не всегда быстрее и лучше. И с точки зрения оптимизатора, и с точки зрения практики. При HASH перемножении двух больших множеств (больших - это значит соизмеримых с размером кэша), которые уже имеются в памяти конечный результат достигается быстрее, чем дерганье индекса (тут даже уже и не важно, есть индекс в кэше или нет). Проверено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 18:51 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Значит я ошибся, и подходы АСА и АСЕ тут расходятся... Вряд ли. Вряд ли и ASA думает о наполненности кэша. Это -- универсально разумный подход. Когда составляется план, кэш может быть заполнен данной таблицей (кстати, выяснение заполненности кэша таблицами -- задача достаточно трудоёмкая, чтобы уже только из-за этого отказаться от её решения во время оптимизации), а когда запрос выполняется, кэш уже может быть от этой таблицы очищен. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 19:02 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > > Ну вот, собсно мои подозрения подтверждаются. Какие и как подтверждаются ? Ещё раз: я полагаю, что никакая СУБД не учитывает при сотавлении плана запроса факт, находятся ли нужные для запроса данные в кэше СУБД или нет. Более того, я могу утверждать это определённо в отношении очень многих СУБД. В частности, ASE, MSSQL, MySQL. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 19:05 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > Я считаю что кэш данных, это достаточно динамично изменяемая штука. Что значит "я считаю" ? Это так и есть. Сейчас кэш наполнен, через минуту - пуст (относительно этой таблицы). А план тот же остался. > Скорее всего, оптимизатор учитывает какую-то среднестатистическую > информацию о наполненности кэша! Нет. Он вообще никакую информацию о наполненности кэша не учитывает. В частности, ASE-шный оптимизатор уж точно (в смысле, я это просто знаю) никак не зависит от текушей наполненности кэша. Он вообще не думает о том, какой будет IO -- физический или логический. Он может только оценивать общий объём доступного для данного объекта кэша (дефолтный или именованый кэш), размеры пулов ввода-вывода, и то, как этот кэш будет заполняться в ходе выполнения данного запроса при применении выбранных для его выполнения стратегий работы с кэшем. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 19:11 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Полностью согласен с вами! Я это и пытался доказать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2009, 21:57 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
MasterZiv Нет. Он вообще никакую информацию о наполненности кэша не учитывает. В частности, ASE-шный оптимизатор уж точно (в смысле, я это просто знаю) никак не зависит от текушей наполненности кэша. Он вообще не думает о том, какой будет IO -- физический или логический. Он может только оценивать общий объём доступного для данного объекта кэша (дефолтный или именованый кэш), размеры пулов ввода-вывода, и то, как этот кэш будет заполняться в ходе выполнения данного запроса при применении выбранных для его выполнения стратегий работы с кэшем. Не спора ради, а из-за здорового любопытсва. авторFactors examined during optimization Query plans consist of retrieval tactics and an ordered set of execution steps to retrieve the data needed by the query. In developing query plans, the optimizer examines: The size of each table in the query, both in rows and data pages, and the number of OAM and allocation pages that need to be read. The indexes that exist on the tables and columns used in the query, the type of index, and the height, number of leaf pages, and cluster ratios for each index. Whether the index covers the query, that is, whether the query can be satisfied by retrieving data from the index leaf pages without having to access the data pages. Adaptive Server can use indexes that cover queries, even if no where clauses are included in the query. The density and distribution of keys in the indexes. The size of the available data cache or caches, the size of I/O supported by the caches, and the cache strategy to be used. The cost of physical and logical reads. Join clauses and the best join order and join type, considering the costs and number of scans required for each join and the usefulness of indexes in limiting the I/O. Whether building a worktable (an internal, temporary table) with an index on the join columns would be faster than repeated table scans if there are no useful indexes for the inner table in a join. Whether the query contains a max or min aggregate that can use an index to find the value without scanning the table. Whether the data or index pages will be needed repeatedly to satisfy a query such as a join or whether a fetch-and-discard strategy can be employed because the pages need to be scanned only once. For each plan, the optimizer determines the total cost by computing the logical and physical I/Os. Adaptive Server then uses the cheapest plan. Stored procedures and triggers are optimized when the object is first executed, and the query plan is stored in the procedure cache. If other users execute the same procedure while an unused copy of the plan resides in cache, the compiled query plan is copied in cache, rather than being recompiled. авторBasic units of costing When the optimizer estimates costs for the query, the two factors it considers are the cost of physical I/O, reading pages from disk, and the cost of logical I/O, finding pages in the data cache. The optimizer assigns 18 as the cost of a physical I/O and 2 as the cost of a logical I/O. These are relative units of cost and do not represent time units such as milliseconds or clock ticks. These units are used in the formulas in this chapter, with the physical I/O costs first, then the logical I/O costs. The total cost of accessing a table can be expressed as: Cost = All physical IOs * 18 + All logical IOs * 2 Из выделенного можно понять, что сервер все-таки разделяет физические и логические IO. И более того, видно, что одно физическое по стоимости равно 9-ти логическим. Константно и не поддается пересчету. Вопрос, а зачем он разделяет операции ввода-вывода? Если думать логически, то если он не учитывает информацию о наличии данных в кэше, считает подефолту все необходимые данные находящимися на диске и не использует никакую статистику по данным в памяти, то зачем ему логические операции ввода-вывода? Получается в каких-то случаях он ее использует. При построении временных и рабочих таблиц, таких же индексов? И прочих внутренних объектов для выполнения запроса? Возможно. Я код сервера не дизассемблировал, и потому утверждать однозначно не могу ни одно, ни другое. А без исходного алгоритма все превращается в теории разной степени достоверности. А может у меня в голове заблуждения, относительно толкования терминов physical/logical IO... При построении плана по хранимым процедурам, АСЕ наверняка не использует статистику по памяти именно из-за того, что план ее выполнения он сохраняет и использует при дальнейших вызовах. В такой ситуации, конечно же, глупо учитывать наличие данных в кэше. Но если бы оптимизатор пересчитывал план каждый раз для каждого запроса, то идея учитывать положение требуемых страниц уже не кажется такой абсурдной. И по моему опыту могу сказать, что АСА занимается чем-то подобным, она ж всегда составляет план перед каждым запросом. Да и с точки зрения реализации это не так уж и сложно. При размере страницы в 8К и размере требуемого массива данных в 100М, кол-во страниц будет порядка 12 тысяч и размер таблицы с битовыми флажками по доступности этих страниц в кэше будет менее двух килобайт. Пробежаться циклом по двум килобайтам и проверить наличие - это не задача для современной техники. К тому же, подобные карты нахождения страниц, их грязности и необходимости скидывания на носитель и так существуют в СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 09:56 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > *The cost of physical and logical reads.* > *For each plan, the optimizer determines the total cost by computing the > logical and physical I/Os. Adaptive Server then uses the cheapest plan.* > Из выделенного можно понять, что сервер все-таки разделяет физические и > логические IO. В анализе -- конечно выделяет. Но эти цифры у него не зависят от текущей наполненности кэша. Только от размера кэша, размера таблицы/индексов, размера пулов ввода-вывода. > Вопрос, а зачем он разделяет операции ввода-вывода? Ну, это базовые единицы стоимости выполнения запроса. Он и выделяет их две. Как зачем ? ну ясно же что физическое и логическое чтение будут разными по времени. Если думать > логически, то если он не учитывает информацию о наличии данных в кэше, > считает подефолту все необходимые данные находящимися на диске и не > использует никакую статистику по данным в памяти, то зачем ему > логические операции ввода-вывода? Потому что в процессе выполнения ЭТОГО запроса он сам уже может заполнить кэш нужными данными, которые после этого в процессе выполнения ЭТОГО ЖЕ запроса будут браться из кэша и вызывать логическое IO без физического. Это-то конечно учитывается. Точнее конечно не так, потому что всё IO считается логическим сначала, а потом добавляется к нему физическое IO, которое оценивается исходя из объемов кэшей. Получается в каких-то случаях он ее > использует. ЧТО использует ? Ты себе сам ответь на этот вопрос -- сразу понятнее будет. И хотя бы представь сложность задачи оценки процента данных таблицы, находяшихся в данный момент в кэше. Это надо между прочим весь кэш перелопатить и все страницы таблицы подёргать. Это O(N*log M) где N - кол-во страниц таблицы, а M - кол-во страниц в кэше. К тому же сервер никогда не имеет в своём распоряжении списка всех страниц таблицы или индекса. > Я код сервера не дизассемблировал, и потому утверждать однозначно не > могу ни одно, ни другое. Достаточно просто подумать головой, чтобы понять, что это и невозможно, и ненужно. А без исходного алгоритма все превращается в > теории разной степени достоверности. А может у меня в голове > заблуждения, относительно толкования терминов physical/logical IO... logical IO -- это любое одно обращение к кэшу за страницей данных (индекса или таблицы). Не через кэш чтения данных не бывает. physical IO -- это одно обращение к кэшу за страницей данных, вызвавшее физическое чтение страницы (страниц) с диска. Это происходит, когда страницы нет в кэше. > При построении плана по хранимым процедурам, АСЕ наверняка не использует > статистику по памяти именно из-за того, что план ее выполнения он > сохраняет и использует при дальнейших вызовах. План выполнения и НЕ процедур точно так же сохраняется, по крайней мере на время выполнения запроса. В такой ситуации, конечно > же, глупо учитывать наличие данных в кэше. Но если бы оптимизатор > пересчитывал план каждый раз для каждого запроса, то идея учитывать > положение требуемых страниц уже не кажется такой абсурдной. Некоторые запросы могут выполняться часами. На сервере работает много пользователей. Уже исходя из этого содержимое кэша может сильно меняться. И по моему > опыту могу сказать, что АСА занимается чем-то подобным, она ж всегда > составляет план перед каждым запросом. ASE тоже иногда составляет план перед каждым запросом, но очень сомневаюсь, что ASA использует данные о текущей наполненности кэша для составления планов. Я, ещё раз, очень сомневаюсь, что вообще какая-то СУБД так делает. Да и с точки зрения реализации > это не так уж и сложно. При размере страницы в 8К и размере требуемого > массива данных в 100М, кол-во страниц будет порядка 12 тысяч и размер > таблицы с битовыми флажками по доступности этих страниц в кэше будет > менее двух килобайт. Ещё раз, прежде всего сервер никогда не располагает списком всех страниц таблицы или индекса. Этот список выясняется только по мере выполнения запроса. Пробежаться циклом по двум килобайтам и проверить > наличие - это не задача для современной техники. К тому же, подобные > карты нахождения страниц, их грязности и необходимости скидывания на > носитель и так существуют в СУБД. Там другая карта. Какие страницы есть в данном кэше. Но списка всех страниц таблицы нет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 10:21 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
MasterZiv ASE тоже иногда составляет план перед каждым запросом, но очень сомневаюсь, что ASA использует данные о текущей наполненности кэша для составления планов. Я, ещё раз, очень сомневаюсь, что вообще какая-то СУБД так делает. Точно говорю, и даже этим свойством я пользовался. Припоминаю одну ситуацию, когда было необходимо выполнить сложный запрос, среди таблиц была одна объемом под 100млн, другая около 3, ну и мелочь всякая. Вообще запрос был очень плохой и тяжелый, но делался он исключительно ограниченное количество раз и смысла перекраивать что-то не было, проще было подождать выполнения. Так вот, с пустым кэшем он честно хватал индексы и все-такое. Если же перед этим делать хитрый холостой запрос, в котором тупо перемножались таблицы и считалось количесвто записей в перемножении (select count(*) from t1,t2,t3), то очевидно для этого он накачивал таблицы через кэш (они туда влезали целиком и не вытеснялись). Так вот, после такого запроса план первоначального запроса менялся в корне, никаких индексов, одни hash join и прочее подобные соединения массивов. Если после выполнения хитрого запроса с перемножением таблиц и искусственным затягиванием их в кэш сделать сброс кэша (sa_flush_cache), то все возвращалось на круги своя, использование индексов и все-такое. Я долго исследовал эту ситуацию, и статистику перестраивал и сервер в единоличное пользование брал для тестов вывод только один: либо это некая фича/баг у оптимизатора, либо он реально оценивал наличие нужных страниц в кэше. Эксперименты делал на АСА9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 11:54 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Точно говорю, и даже этим свойством я пользовался. Припоминаю одну > ситуацию, когда было необходимо выполнить сложный запрос, среди таблиц Не, не поверю. Пока сам не увижу, не поверю Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 11:59 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Думаю пора привлекать спецов из тех.поддержки! moris, ASCRUS рассудите нас! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 12:33 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Imperous, я б Вам порекомендовала выполнить команду update ALL statistics ТАБЛИЦА (или обновить статистику по конкретным индексам), для тех таблиц, у которых иногда не берутся индексы при выполнении хранимой процедуры. Должно помочь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2009, 15:24 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
cherrex_DenДумаю пора привлекать спецов из тех.поддержки! moris, ASCRUS рассудите нас! Официально в документации ничего про кеши в планах запросов не написано. Однако: 1. В детализации плана запроса на каждую таблицу показывается кол-во всех страниц таблицы и сколько из них лежит в кэше 2. Существует достаточно замороченный механизм сохранения в БД в отдельную область наиболее часто используемых страниц таблиц, висящих в кэше и соответствено не менее замороченный механизм поднятия записанных страниц кэша из БД в память как при старте сервера, так и в режиме его дальнейшей работы 3. Не менее заморочен механизм кэширования планов запросов (причем для каждой сессии ведется свой кэш плана запросов), с учетом параметров запроса, частоты его выполнения сессией, типа используемого курсора, проверок, что запрос в кэше не устарел и т.д. Так что как минимум при оценке плана запроса учитывается, насколько много страниц таблицы уже лежит в кэше. А с учетом того, что ASA старается еще и кэш сохранять даже на момент перезапуска сервера, значит сервер вдумчиво относиться к кэшированию страниц и вполне возможно может использовать информацию по кэшу в плане запросов, хотя здесь уже конечно можно только предположить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2009, 16:57 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
ASCRUS wrote: > Так что как минимум при оценке плана запроса учитывается, насколько > много страниц таблицы уже лежит в кэше. А с учетом того, что ASA > старается еще и кэш сохранять даже на момент перезапуска сервера, значит Это всё про ASA ? Вроде бы про ASE речь... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2009, 18:19 |
|
||
|
Процедура и кэши (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
принцессаImperous, я б Вам порекомендовала выполнить команду update ALL statistics ТАБЛИЦА (или обновить статистику по конкретным индексам), для тех таблиц, у которых иногда не берутся индексы при выполнении хранимой процедуры. Должно помочь update statistic я делал первым делом, и для талиц и для всех индексов отдельно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2009, 02:21 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35975452&tid=2011024]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 175ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...