|
|
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hi all Дано: 1) Из текущих сырцов собран LI-V2.5.3.26554 (никаких патчей от Источников Света к сырцам не применял). 2) Имеется база с единственной таблицей `t` (id int, s varchar(50), h bigint; поле `id` - индексное), в таблице 1 миллиард записей. Размер базы - 118 Гб. 3) Никаких "фрагментов" файла базы в кеше операционки нет. Вижу на такой базе несколько удивительных эффектов (все коннекты к базе - через TCP). ЭКСПЕРИМЕНТ-1. Запускаю трейс, в другом окне - isql. Ввожу в isql: select * from t where id = 789456123; (такой ID'шник - существует). Выборка по индексу единственной записи уходит в себя на... 5 минут. ДЕ мне объяснил, что это время тратится на "вычитку" PP. Но не многовато ли 5 минут читать эту самую "пэ-пэ" ? Я знаю, что скорость копирования файлов на этой машине ~50 Mb/sec ==> за 300 сек можно скопировать ~15 Gb. Как примерно определить, сколько места занимает PP ? Далее, в трейсе вышеприведенный запрос появится только после того, как будет завершена эта самая "вычитка" PP. И там будет некоторое микроскопическое время, которое он якобы делался. Я понимаю, что трейс на сегодня показывает не все "служебные действия" (sweep только) - но нельзя ли расширить его в этом вопросе ? ЭКСПЕРИМЕНТ-2. В первом окне ввожу запрос к таблице `t` на выборку данных (не подсчет строк - а именно выборку полей). Во втором окне пытаюсь срубить деятельность окна_1 через Код: sql 1. Результат: ноль. Окно_1 будет работать, невзирая на все потуги окна_2. Срубить окно_1 можно только через delete from mon$attachments. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ЭКСПЕРИМЕНТ 3. Срубил окно, пытавшееся завалить выборку, но саму выборку оставил работать. Запустил с другой машины isql и попытался подключиться к этой же базе. Результат: подключение к базе из второго isql-окна длится... МИНУТУ(!). В подключающемся окне я запускал батник, в котором непосредственно перед isql указано: echo %time%. Затем посмотрел, в какой момент времени трейс покажет установку соединения от этого второго окна. Итого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 17:53:32 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
PS. Повторил эксперимент_2 на "разогретой" базе - ноль эмоций: index-выборка из 10Е9-таблицы через mon$statements не срубается (вводил в другом окне commit; delete from mon$statements where ... ; commit; не менее 10 раз - всё бестолку). Трейс этих лихорадочных попыток срубить запрос см. в аттаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 18:09:51 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидВыборка по индексу единственной записи уходит в себя на... 5 минут. не выборка, а prepare запроса, потому что да, prepare читает PP таблицы для определения ее кардинальности (хочет понять, сколько там записей). и на терабайтной базе было не 5 минут, а 45 секунд, и не на миллиарде записей, а на 3.7 миллиардах. ТаблоидИ там будет некоторое микроскопическое время, которое он якобы делался. да, тоже есть такой эффект. Якобы время сканирования pp для сервера пролетело как один миг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 19:01:31 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvи на терабайтной базе было не 5 минут, а 45 секунд, и не на миллиарде записей, а на 3.7 миллиардах.Очень странно. У мну эта база сейчас на нормальном linux-серваке, с вменяемым дисковым массивом. Но время таки не 45 сек, а гораздо больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 19:21:24 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvне выборка, а prepare запроса, потому что да, prepare читает PP таблицы для определения ее кардинальности (хочет понять, сколько там записей)..А зачем ему оценивать кардинальность, когда нет соединения с другим источником и есть эвристика оптимизатора, при которой индексное поле обязательно будет задействовано в случае указания его в where-предикате ? То есть, зачем ему что-то там оценивать, когда нет альтернативы и всё равно придется "ходить лошадью индексом" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 19:26:41 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидА зачем ему оценивать кардинальность, когда нет соединения с другим источником и есть эвристика оптимизатора, при которой индексное поле обязательно будет задействовано в случае указания его в where-предикате ? То есть, зачем ему что-то там оценивать, когда нет альтернативы и всё равно придется "ходить лошадью индексом" ? Кардинальность оценивается всегда - цена универсальности оптимизатора. Он вполне может решить не использовать индекс и пройтись натуралом. Другой вопрос, что нет заточки для частных синтетических случаев, когда например индекс уникальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 19:36:59 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
avp_Он вполне может решить не использовать индекс и пройтись натуралом.Не в ФБ. Если по полю создан индекс и это поле указано в предикате, то индекс *будет* задействован, помимо нашей воли и сознания. Даже при выборке всех строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 19:44:02 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидavp_Он вполне может решить не использовать индекс и пройтись натуралом.Не в ФБ. Если по полю создан индекс и это поле указано в предикате, то индекс *будет* задействован, помимо нашей воли и сознания. Даже при выборке всех строк. Может быть натурал и не заложен, но порядок соединения и используемые индексы однозначно оценивает через умножение кардинальности на селективность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 19:49:39 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидОчень странно. У мну эта база сейчас на нормальном linux-серваке, с вменяемым дисковым массивом. Но время таки не 45 сек, а гораздо больше. Ничего странного: у тебя страница четыре килобайта, а у ДК - 16. Время чтения (как обнаружил Пол Ривз на конференции) зависит не от объёма, а от количества чтений, коих у тебя вчетверо больше. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 20:09:30 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидНе в ФБ не в текущих версиях ФБ, не более того. Это всегда может измениться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 21:13:21 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВремя чтения (как обнаружил Пол Ривз на конференции) зависит не от объёма, а от количества чтений, коих у тебя вчетверо больше.Поздравляю с открытием Вот тебе еще одно "откровение" - для SSD это тоже верно, хоть и в меньшей степени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 21:20:54 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид ЭКСПЕРИМЕНТ-1. Я понимаю, что трейс на сегодня показывает не все "служебные действия" (sweep только) - но нельзя ли расширить его в этом вопросе ? трейс должен это время показывать в строке, относящейся к prepare Таблоид ЭКСПЕРИМЕНТ-2. В первом окне ввожу запрос к таблице `t` на выборку данных (не подсчет строк - а именно выборку полей). Во втором окне пытаюсь срубить деятельность окна_1 через Код: sql 1. Результат: ноль. Окно_1 будет работать, невзирая на все потуги окна_2. Срубить окно_1 можно только через delete from mon$attachments. особенность текущей реализации, к сожалению. Удалить (сиречь: остановить) можно только активный риквест. А в твоем случае он всегда опознается как неактивный (stalled), мы это уже обсуждали недавно. Я подумаю, что тут можно сделать. Таблоид ЭКСПЕРИМЕНТ 3. Срубил окно, пытавшееся завалить выборку, но саму выборку оставил работать. Запустил с другой машины isql и попытался подключиться к этой же базе. Результат: подключение к базе из второго isql-окна длится... МИНУТУ(!). вот это фигня какая-то, не должно такого быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 21:21:10 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvladПоздравляю с открытием Да для меня-то это открытием не было, но удивление Пола было так забавно, что я не преминул встрять. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 21:27:41 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvladТаблоид ЭКСПЕРИМЕНТ 3. Срубил окно, пытавшееся завалить выборку, но саму выборку оставил работать. Запустил с другой машины isql и попытался подключиться к этой же базе. Результат: подключение к базе из второго isql-окна длится... МИНУТУ(!).вот это фигня какая-то, не должно такого бытьЭто повторяется уже как минимум в третий раз. И происходит сиё, когда : 0) во втором isql-окне делаем quit; 1) в "молотильном" isql-окне ждём, когда завершится выборка по диапазону, для верности делаем там commit; 2) даём серверу заняться чем-то, что вытеснит базу или часть её из кеша операционки (увы, но я не сразу вспомнил про FileSystemCacheThreshold, см ниже) 3) в "молотильном окне" запускаем одиночный index-поиск: Код: sql 1. При этом в трейсе *НЕ* появится никакого сообщения о prepare stetement. Будет только START_TRANSACTION. Акцентирую на этом особое внимание, т.к. из слов kdv выше следует обратное: что затраты идут именно на prepare. 4) снова пытаемся подключиться вторым isql-окном: Код: plaintext 1. В итоге, в трейсе на момент завершения одиночного index-поиска, который длился 201 секунду(!), вижу: trace Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 1) старт транзакции, в которой отдана команда одиночного index-поиска: 2012-11-10T 22:05:18 .9720 2) выполнение prepare этого index-запроса: 2012-11-10T 22:08:40 .0550 Разница между ними равна 3 мин 21 сек, т.е. около 201 секунды. Можно, конечно, изо всех сил не поверить своим глазам и сказать себе "я ошибся". Однако, в isql того окна, где был одиночный index-поиск, вижу то же самое - общее время более трёх минут: isql stats Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. PS. Файловый кеш линуха сильно мешает чистоте замеров. Выключу-ка его: поставлю FileSystemCacheThreshold = 75 при кеше коннекта = 768, "пущай полетает" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 22:41:20 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Пардон муа, опечатался при правке предыдущего поста. Вот эта цитата:вот это фигня какая-то, не должно такого быть- принадлежит не Владу, а Дмитрию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 22:43:12 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrтрейс должен это время показывать в строке, относящейся к prepareОн там показываает какой-то момент времени, но не длительность этого самого препаре. См. выше, повторю на всякий случай еще раз:Таблоид Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 22:46:40 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидгде тут видно временн ы е затраты ?Отбой, глаза замылены уже. Вижу :-) Выключил использование кеша операционки (поставил fileSystemCacheThreshold = 0), рестартовал ФБ. Запустил снова isql с одиночным index-запросом. В соседнем окне выполнял батник, выводящий время (echo %time%) и натравливающий isql на простенький скрипт: select current_timestamp from rdb$database; commit; Длительность установки коннектов в этом окне составляет 2-3 сек (причём в первый запуск isql - 10 сек, второй - 7 сек). Затраты на прераре в окне с одиночным index-поиском составили 121 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 22:57:34 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Итак, загадочная пауза вызвана затратами на prepare. Тогда вопрос: что там скрывается, в этих затратах ? Запрос, который надо выполнить: Код: sql 1. - для разбора тривиален и должен ( вроде бы ) привести к мгновенному рождению плана его выполнения. Именно в виду эвристик, которые заложены в нынешний код ФБ. Тогда что еще включено в "препарирование" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 23:05:57 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидИтак, загадочная пауза вызвана затратами на prepare. я ж сразу сказал... ТаблоидТогда что еще включено в "препарирование" ? просчет кардинальности, т.е. скан pp. Он самый долгий на больших базах. Вернее, на больших базах более заметен, чем на мелких. И, чем больше таблиц в запросе, тем дольше будет просчет, т.к. кардинальность считается для всех таблиц (вроде). Подробнее разве что в http://firebird.svn.sourceforge.net/viewvc/firebird/firebird/tags/R2_5_2/src/jrd/Optimizer.cpp?revision=57336&view=markup ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 23:22:01 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdv prepare читает PP таблицы для определения ее кардинальности (хочет понять, сколько там записей).Ну так я снова хочу поинтересоваться: сколько можно читать PP единственной таблицы, если база имеет такую статистику: gstat -r Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. Как хотя бы примерно оценить размер этой PP ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 23:23:49 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидТогда что еще включено в "препарирование" ? тьфу. кроме кардинальности еще наличие индексов и их селективность. Но с индексами проще, в том смысле, что найти их все и вытащить селективность - это быстро делается. Хотя, была какая-то штука, при большом количестве таблиц и индексов был долгий перебор вариантов. Но вроде это давно починили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 23:24:10 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvросчет кардинальности, т.е. скан pp . <...> Подробнее разве что в http://firebird.svn.sourceforge.net/viewvc/firebird/firebird/tags/R2_5_2/src/jrd/Optimizer.cpp?revision=57336&view=markup гы... и где ТАМ искать пресловутый "скан PP" ? (по словам `pp` и `pointer`, кстати, ничего релевантного там нету!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 23:33:33 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидНу так я снова хочу поинтересоваться: сколько можно читать PP единственной таблицы, если база имеет такую статистику... Как хотя бы примерно оценить размер этой PP ? 28567997 страниц данных, это примерно 3 млн pointer pages. Столько случайных дисковых чтений нужно для оценки кардинальности таблицы. Ты же специально выбрал самый поганый сценарий, с минимальным размером страницы. Вот и огребай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 23:44:01 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitr28567997 страниц данных, это примерно 3 млн pointer pages пардон, 30 тыс конечно же. Пиво мешает арифметике :-) Но отмечу, что эти 30 тыс равномерно размазаны по 118ГБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 23:46:45 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvкардинальность считается для всех таблиц (вроде)Нет конечно. А вот при аттаче выполняются некоторые служебные запросы, плюс читается rdb$pages. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 00:07:58 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидКак хотя бы примерно оценить размер этой PP ?Ты не знаешь р-р страницы ? :) Кол-во PP можно узнать, зная кол-во DP и р-р страницы: cntPP ~ cntDP / ((pageSize - 16) / 5) В твоём случае 28567997 / (4080 / 5) = 35010 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 00:12:56 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvladcntPP ~ cntDP / ((pageSize - 16) / 5) В твоём случае 28567997 / (4080 / 5) = 35010Промахнулся немного. Правильнее будет cntPP ~ cntDP / ((pageSize - 16) * 8 / 34), и 28567997 / (4080 *8 / 34) = 29759 (как и сказал dimitr) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 00:17:22 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvladПравильнее будет cntPP ~ cntDP / ((pageSize - 16) * 8 / 34), и 28567997 / (4080 *8 / 34) = 29759 (как и сказал dimitr)Ну, и ?! 30 тыс страниц, по 4 Кб каждая, читаются 201 секунду. Это как объяснить-то ? Даже если они там "размазаны" внутри базы, их смещения от начала .fdb - они известны или нет ? И еще. Уже несколько дней всё порываюсь спросить, да всё как-то стеснялся... Почему isql показывает для одиночного index-поиска (не "первого с момента коннекта", а любого - хоть сто пятого) удивительно близкие к твоим 29.8 тысячам значения reads & fetches: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 00:42:20 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидНу, и ?! 30 тыс страниц, по 4 Кб каждая, читаются 201 секунду. Это как объяснить-то ? Даже если они там "размазаны" внутри базы, их смещения от начала .fdb - они известны или нет ? все смещения, разумеется, известны. А в целом это вопрос исключительно к твоей дисковой (и, возможно, файловому кешу). Не все меряется байтами. Перемещение головки (особенно сильно далеко) - намного медленнее, чем чтение страницы. ТаблоидУже несколько дней всё порываюсь спросить, да всё как-то стеснялся... isql включает статистику препаре, трейс видимо нет. Или ты опять не туда смотришь. Мне уже надоедает повторять одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 00:50:00 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrisql включает статистику препаре, трейс видимо нет.Это понятно. Интересует другое: зачем при каждом прераре, невзирая на характер sql-запроса , перечитываются все 30 тыс PP той таблицы, которая в нём упомянута ? Вот, например, здесь даже таблица не нужна, не то что индекс, - а всё равно будут перекопаны "все грядки": Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 01:00:17 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидВыключил использование кеша операционки (поставил fileSystemCacheThreshold = 0), рестартовал ФБ. Запустил снова isql с одиночным index-запросом. я вот тут, кстати давеча наблюдал "несрабатывание" DELETE FROM MON$ATTACHEMNTS WHERE MON$ATTACHMENT_ID = ...; до тех пор, пока сам процесс fb_inet_server через диспетчер задач не срубишь. Причем ситуация была на аварийном сервере, где из RAID1 винт вывалился и оно летело на трех винтах вместо четырех. Тогда у клиента остановить предприятие нельзя было, ждал выходных. После пересобирания RAID и переустановки ОСи проблема исчезла сама собой. Правда, FileSystemCache я не пользую, зато у классика кеш в 16000 страниц по 8192 выставлен (а че мелочиться ?), база - маленькая 2Gb. ------------------ Другой пример, полгода назад. У другого клиента начал подыхать винт, причем не предупредив об этом никого (в смысле, нет шоб сразу бэд-секторами пойти, а как-то по-тихоньку помирать начал, глюки были неочевидными). Аналогично было c MON$ATTACMENTS, который стал в тот момент ReadOnly. Заменили винт - MON$ATTACMENTS стал RW. ------------------ Вот и мысли у меня, что может MON$ATTACHMENTS как-то от работы дисковой системы сильно зависит ? И если дисковую подсистему колбасит (хардварно или программно), то MON$ATTACHMENTS переходит в ReadOnly. и примеры Таблоида подтверждают, что даже когда дисковую подсистему не колбасит, а она просто... э-э-э... занята, то MON$ATTACHMENTS становиться немного не в курсе последних событий. Я к чему это все: основная задумка использования MON$ATTACHMENTS была в том, чтобы правоверно и строго по Корану срубить коннект, который че-то не так делает (ну, там запросы кривые, или просто базу вешает). А если оно так сильно от дисков зависит, то смысл в нем ? проще тогды уже через туннель на сервак зайти и выполнить kill ненужного процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 01:01:23 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидНу, и ?! 30 тыс страниц, по 4 Кб каждая, читаются 201 секунду. Это как объяснить-то ?Раздели 201 на 30000 и сравни с avg seek time своего диска. Вряд ли оно меньше или даже сравнимо с 7 мс... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 01:06:39 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
PEAKTOPMON$ATTACHMENTS становиться немного не в курсе последних событий.Не, погодь! У мну как раз mon$ attachments работает как часы, в т.ч. и на этой таблице: срубает заработавшиеся коннекты только так. А вот mon$ statements срубает работающие стейтменты не всегда, а только при mon$state = 1 (см. первый пост) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 01:07:32 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrМне уже надоедает повторять одно и то же.А меня это как достало :'( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 01:07:33 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидИнтересует другое: зачем при каждом прераре, невзирая на характер sql-запроса , перечитываются все 30 тыс PP той таблицы, которая в нём упомянута ?Спроси того, кто писал оптимизатор. В 3-ке это планируется переделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 01:08:53 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvladРаздели 201 на 30000 и сравни с avg seek time своего диска. Вряд ли оно меньше или даже сравнимо с 7 мс...Еще бы понять, чем мерять это avg seek time... :-/ lshw показывает, что у нас в этом серваке установлен IBM ServeRAID M5015. Кто-нить в курсе, какие у него ТТХ ? ЗЫ. А встроенная мерялка скорости чтения с диска показывает какую-то очень уж оптимистичную картину: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 01:30:04 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидPEAKTOPMON$ATTACHMENTS становиться немного не в курсе последних событий.Не, погодь! У мну как раз mon$ attachments работает как часы, в т.ч. и на этой таблице: срубает заработавшиеся коннекты только так. А вот mon$ statements срубает работающие стейтменты не всегда, а только при mon$state = 1 (см. первый пост)Наврал я тут, есть один случай - как раз сейчас его вижу: mon$attachments *НЕ* реагирует на просьбы грохнуть все коннекты, если коннекты эти были оборваны на стороне клиента. Например, если все isql-окна и соотв-щие cmd.exe были грохнуты утилитой pskill.exe. Тогда при подключении к базе непосредственно после этого будем видеть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Я так понимаю, пока ФБ делает откаты изменений, произведённых этими окнами, "светлые образы" их коннектов всё равно торчат в mon$ attachments . Пока набирал этот текст, число коннектов стало меньше на 26, но на команду удаления они (оставшиеся) всё равно не реагируют: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 01:40:44 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидЯ так понимаю, пока ФБ делает откаты изменений, произведённых этими окнами, "светлые образы" их коннектов всё равно торчат в mon$ attachments . естественно. Во-первых, откат изменений прерывать не всегда можно, это чревато. Во-вторых, удаление аттача - это для начала тот же самый откат изменений, так что ты в принципе не можешь увидеть никакого эффекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 10:44:27 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvladВ 3-ке это планируется переделать. именно это (зависимость от характера запроса) у меня нет никакого желания менять. А вот избежать полного скана PP можно будет, наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 10:47:16 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
PEAKTOPЯ к чему это все: основная задумка использования MON$ATTACHMENTS была в том, чтобы правоверно и строго по Корану срубить коннект, который че-то не так делает (ну, там запросы кривые, или просто базу вешает). А если оно так сильно от дисков зависит, то смысл в нем ? я не вижу никаких доказательств, что где-то что-то критично (а не просто сильно) зависит от дисков. Случай "разбитого" рейда не учитываем, это форс-мажор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 10:49:08 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrоткат изменений прерывать не всегда можно, это чревато.А если FW=ON - тоже чревато ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 11:09:09 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrНо отмечу, что эти 30 тыс равномерно размазаны по 118ГБ.Правильно ли я понимаю, что после b/r фрагментация PP едва ли уменьшится, т.к. очередная PP рождается на каждые n DP в момент заливки, а не вся пачка сразу на таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 11:10:20 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
arni, правильно, ибо размера таблицы никто не знает. Можно попробовать выделять некоторыми фиксированными пачками, мы это обсуждали. Но именно проблема препаре решается и другими способами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 11:18:02 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидА если FW=ON - тоже чревато ? могу тебе в стопицотый раз сказать, что никто не будет менять поведение сервера относительно настройки FW ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 11:20:11 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrhvladВ 3-ке это планируется переделать. именно это (зависимость от характера запроса) у меня нет никакого желания менять. А вот избежать полного скана PP можно будет, наверноеЯ именно это имел в виду, просто в неудачном месте ответил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 11:58:58 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrА вот избежать полного скана PP можно будет, наверноеА это в 2.5.x можно как-то вкрячить ? или только трёшку ждать ? Я к тому, что таблицы в 1 млрд записей сейчас может и редки, но вот 10-20 таблиц по 50-100 млн строк запросто могут быть в системах, которые работают 5 лет и больше. И запрос, в котором упомянуты 3-4 такие таблицы, будет при каждом prepare будет сканировать эти самые PP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 12:06:47 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, 1) 100 млн строк - это 3000 маленьких страниц или 1500 средних или 750 больших, т.е. время их чтения будет 20 сек в худшем случае и 5 сек в лучшем 2) большинство из них будет кешировано сервером или осью после первого обращения в общем, как обычно, ты преувеличиваешь серьезность проблемы. Ну и единственное возможное в 2.5 решение тоже имеет свои недостатки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 12:45:52 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrбольшинство из них будет кешировано сервером или осью после первого обращения Насколько я понимаю это верно для систем с постоянным коннектом. Если же коннект постоянно уничтожается и создаётся заново, то для классика кэш придётся заполнять заново. В частности это будет происходить при использовании PHP. Пока что единственный способ этого избежать использовать пул коннектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 13:04:19 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисЕсли же коннект постоянно уничтожается и создаётся заново на каждый запрос? Если да, то оно встанет раком в любом случае. Если нет, то кеш сыграет свою роль. Ну и кроме того, кеш оси будет помогать (если база многопользовательская). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 13:15:52 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Не на каждый запрос конечно. В случае веб страницы на каждую страницу. Впрочем как я уже сказал там можно применить пул коннектов, ну или использовать суперсервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 13:18:40 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Маленькая ремарка, исключительно по железке. ТаблоидНу, и ?! 30 тыс страниц, по 4 Кб каждая, читаются 201 секунду. Это как объяснить-то ?30000/200 = 150 (операций ввода-вывода с диска, то бишь в простонародье "иопсов"). 150 иоспов типичная (даже немного оптимистичная) цифирь для одиночного САТА диска. Лично я не вижу ровно никакого противоречия, если база не "разогрета". ТаблоидЗЫ. А встроенная мерялка скорости чтения с диска показывает какую-то очень уж оптимистичную картину: Код: plaintext 1. 2. 3. Таблоидlshw показывает, что у нас в этом серваке установлен IBM ServeRAID M5015. Кто-нить в курсе, какие у него ТТХ ?Судя по редбуку ТТХ не самые тухлые, но больше сказать не могу, в руках не держал. Диски какие и сколько? Батарейка е? тип массива? Примени иометер, чтоб оценить что можно от железки ждать. размер задаешь примерно по размеру базы, кол-во воркеров по кол-ву коннектов к базе, размер блока по размеру странички БД и смотришь полученные чиселки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 16:06:08 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид Код: plaintext В общем терзают меня смутные сумненья на предмет крутости дисковой ПС твоего сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 16:09:43 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyДиски какие и сколько? Батарейка е? тип массива?lshw в аттаче ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 16:10:34 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидlshw в аттаче Маниак, блин. Нет там инфы о дисках. это надо смотреть в утиле управления контроллером, ОСь в принципе не знает о кол-ве дисков за аппартным контроллером рэйд. Судя по наличии файберного хба есть намек на то, что дисков всего пара, чтоб бутить сервер, а остальное должно браться с файберного сундука с дисками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 16:23:50 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevskyэто надо смотреть в утиле управления контроллером, ОСь в принципе не знает о кол-ве дисков за аппартным контроллером рэйд.ладно, завтра спрошу у наших железячников (хотя с ними всегда трудно вести диалог, ибо невменяемые они у нас). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 17:04:35 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидв этом серваке установлен IBM ServeRAID M5015. Кто-нить в курсе, какие у него ТТХ ? Красные книжки . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 17:20:09 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, По первый эксперимент: одна запись по ключу должна подписаться мигом. Может тормозит оптимизатор? Не пробовал форсануть этот один нещастный индекс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 17:20:40 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
MasterZivПо первый эксперимент: одна запись по ключу должна подписаться мигом. Может тормозит оптимизатор? что значит "подписаться"? ты читал первый же ответ 13451906 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 17:36:55 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
MasterZivодна запись по ключу должна подписаться мигом.Она и так мигом выхватывается, на собственно поиск в индексе уходит 6 фетчей. Выше уже выяснилось, что все беды от того, что при КАЖДОМ запросе, в котором упоминается большая таблица, ФБ будет искать ВСЕ её PP, коих в данном случае набралось почти 30 тыс и они, к тому же, размазаны по файлу, т.е. последовательной вычиткой тут не получится. MasterZivНе пробовал форсануть этот один нещастный индекс?Что значит "форсануть" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 18:35:08 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Продолжу стартовый пост. ЭКСПЕРИМЕНТ 4. Дано: 1) локальная машина, время которой отстаёт от серверного на 0.343 сек 2) запущенный трейс, отслеживающий активность на этой базе. 3) база не "разогрета", т.е. её "фрагменты" в кеше операционки отсутствуют. Запускаю на локальной машине батник: Код: plaintext 1. 2. Код: plaintext Получаю при первом запуске этого скрипта: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Получаю при втором (вспомогательном) запуске этого скрипта: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Второй (вспомогательный) запуск - только для определения разности показаний часов раб. станции и сервера. Вывод времени сервера в isql в этом запуске был практически мгновенным. Это значит, что время установки коннекта было почти 0 и для определения разности показаний часов можно просто сравнить два значения: 23:39:52.72 и 23:39:53.06. Отставание часов рабочей станции получается примерно 0.34 сек. Теперь смотрим на время, которое было на рабочей станции при входе в батник в первом запуске: 23:39:03,39 - и на время, которое показал трейс в момент установки коннекта: 23:39:07.26 Если прибавить к 23:39:03,39 дельту 0.34", получим 23:39:03.73 - это время по часам сервера, которое было в момент первого запуска батника. Тогда время установки коннекта к этой базе составило: Код: plaintext Я не очень понимаю, что может делать ФБ в течение 3.5 сек при попытке установить коннект. Проверка пароля делается с использованием security2.fdb - это всё очень быстро, да и sec2.fdb на этом серваке всё время закеширована, там тесты идут. Даже если база `t1` не была в кеше, открытие файла на бездействующем серваке - операция также мгновенная. Метаданные при коннекте от isql вроде бы НЕ вычитываются. Что тогда занимает время ? PS. Вижу этот эффект регулярно - каждый раз после того, как память основательно будет "потрясена" другими тестами и от базы `t1` в кеше ничего не останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 00:11:39 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидкаждый раз после того, как память основательно будет "потрясена" другими тестами и от базы `t1` в кеше ничего не останется. Зато в нём куча прочего дерьма, которое надо куда-то сбросить, прежде чем туда сможет влезть хоть что-то от этой твоей базы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 00:43:19 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, хотя тут не нужно вычитывать огромный объем PP на prepare, но всё же, что если сделать доп.пример и вовсе исключить обращение к таблицам в запросе времени. Например вместо Код: sql 1. примерно так дернуть Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 08:19:33 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидЯ не очень понимаю, что может делать ФБ в течение 3.5 сек при попытке установить коннект. Проверка пароля делается с использованием security2.fdb - это всё очень быстро, да и sec2.fdb на этом серваке всё время закеширована, там тесты идут . Даже если база `t1` не была в кеше, открытие файла на бездействующем серваке - операция также мгновенная. Метаданные при коннекте от isql вроде бы НЕ вычитываются. ты бы определился, что-ли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 09:12:13 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
arniпримерно так дернутья попробовал это, только предварительно вырубил использование кеша FS: поставил FileSystemCacheThreshold = 0 и рестартовал ФБ. Результат 10 запусков: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. PS. я затем еще раз перегрузил ФБ и заметил: первый с момента рестарта коннект идёт дольше остальных (примерно на 1-2 секунды). Чем это объяснить при FileSystemCacheThreshold = 0 - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 09:40:48 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrты бы определился, что-ли"там тесты идут" - это значит, что ИМЕЮТ ОБЫКНОВЕНИЕ быть запущенными То есть, я стартовал там утром / днём известный тебе idx_under_load_test, по нескольку раз, а затем остановил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 09:42:58 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидЯ так понимаю, пока ФБ делает откаты изменений, произведённых этими окнами, "светлые образы" их коннектов всё равно торчат в mon$ attachments . естественно. Во-первых, о ткат изменений прерывать не всегда можно , это чреватоЧто-то сильно затормозил я тогда с встречным вопросом. Если откат изменений иногда "чреват", то как же тогда быть с gfix -shut full -force 0 ? Ведь этой команде чихать на откаты изменений, она просто останавливает базу, не дожидаясь завершения откатов. Да, я знаю, что валидация затем покажет тучу нестрашных orphan pages, а для индексов - такую же тучу нестрашных "Index N is corrupt on page X level Y at offset Z...., validation.cpp, line: 2050 или 2060" (насчет нестрашности последних - см тут ). По такой логике, после каждого шатдауна базы на работавших коннектах требуется b/r делать (ввиду "чреватости" незавершенных откатов) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 15:38:55 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид Ведь этой команде чихать на откаты изменений, она просто останавливает базу, не дожидаясь завершения откатов. Да, я знаю, что валидация затем покажет тучу нестрашных orphan pages, шо-шо??? shut force отрубает коннекты, и им делается rollback. никаких orphan pages при этом быть не может. orphan pages образуются тольки при срубании коннекта, который пилил базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 18:00:15 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, при шатдауне все откаты штатные и полноценные, не надо наводить панику на пустом месте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 18:13:56 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvпри срубании коннекта, который пилил базу. мнэ, при срубании сервака (или процесса классика). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 21:09:12 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrпри шатдауне все откаты штатные и полноценные, не надо наводить панику на пустом местеПри gfix -shut full -force 0 -- да, отрубает ОК и делает откаты (вижу в трейсе). А теперь попробуем останавливать базу и службу ФБ (у мну её имя = "fb25_3050") вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Тест: окно #1 // Запускаем трейс окно #2 // в нём будет введён батник, показанный выше окно #3 // создаём новую базу, делаем к ней коннект via TCP и напихиваем 2 млн строк: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. окно #2 Код: plaintext 1. 2. 3. 4. 5. 6. окно #1 Трейс в "хвосте" своего лога будет иметь текст без каких-либо упоминаний о ROLLBACK'e: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. окно #3 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. окно #1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В аттаче - firebird.log после проведения валидации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 09:05:41 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
PS. И это еще не всё. Оказывается, если ФБ-службу не останавливать, а всего лишь зашатдаунить базу: Код: plaintext 1) база получит атрибут `full shutdown` (gstat -h выведет его); 2) коннект, который в это время что-то там писал в эту базу, ... будет спокойно продолжать туда дописывать! И более того, если он не выполнит детач, то и дальше сможет трудиться "на благо родины": делать commit'ы, запускать новые DML / DDL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 09:10:40 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 09:20:25 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitr а мужики-то и не знали... я видел этот тикет, однако ночером уже не было сил его искать :/ ну, а что про orphan'ы, когда служба ФБ останавливается после лже-шатдауна, недовыполнив откаты, - это бага или нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 09:49:22 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, когда останавливается служба, ядру дается 10 сек на "чистый" откат. Если он не успел, то селяви - тогда будут орфаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 10:08:25 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
авторМожет быть натурал и не заложен, но порядок соединения и используемые индексы однозначно оценивает через умножение кардинальности на селективность. Ага, надо только правильно запрос, то бишь... как его... вопрос, во, вопрос сформулировать, что бы при оценке оптимизатора кардинально поменялся индекс were-предиктора, иначе заточка будет другая и лаги только возрастут. При этом на селективность можно не обращать внимания, она всегда нулевая. Ок, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 23:20:40 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
up. Проверяю подключение клиента WI-2.5 к серверу LI-3.0, на котором пересоздана эта таблица (1 млрд строк). Машина сервера после этого была перезагружена (shutdown -r now). Таблица была создана под sysdba, в embedded-подключении (дабы быстрее) при этом не привилегированному юзеру с именем `u25` никаких прав на неё выдано не было - забыл про это. Затем подключился к базе по tcp, с виндовой машины, под юзером `u25`. Само подключение (появление подсказки в isql) выполнилось практически мгновенно, т.е. как и в обычных случаях. Далее ввёл запрос: Код: plaintext 1. Сразу после этого в логе трейса появилось: Код: plaintext 1. И только через 3 минуты в трейсе вылезло: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. А isql выплюнул соотв-щий облом: Код: plaintext 1. Как говорилось выше в этом топике, на "холодной базе" первый запрос (даже по индексу PK) будет выполняться долго из-за вычитки PP. Но ведь ДО начала этой вычитки FB проверяет мои права на запрашиваемый объект - не так ли ? А права эти живут в крохотных RDB$-таблицах. Проверка этих RDB$таблиц должна выполняться мгновенно. Тогда откуда лезут эти три минуты(!), чтобы дать в итоге облом по no permission for SELECT ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 01:24:10 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоид ЭКСПЕРИМЕНТ-2. В первом окне ввожу запрос к таблице `t` на выборку данных (не подсчет строк - а именно выборку полей). Во втором окне пытаюсь срубить деятельность окна_1 через Код: sql 1. Результат: ноль. Окно_1 будет работать, невзирая на все потуги окна_2. Срубить окно_1 можно только через delete from mon$attachments.особенность текущей реализации, к сожалению. Удалить (сиречь: остановить) можно только активный риквест. А в твоем случае он всегда опознается как неактивный (stalled), мы это уже обсуждали недавно. Я подумаю, что тут можно сделать .Кое-что действительно сделано. Но хотелось бы решить вопрос со скоростью реакции на delete from mon$statements "радикально и навсегда". Повторил этот эксперимент на "разогретой" базе. Запустил сначала isql в первом окне и ввёл там: Код: plaintext 1. 2. ФБ занялся сканированием индекса в поисках записи с id >= 123456789. Он делает это настолько медленно, что никакого вывода строк на экран не происходит даже в течение 10-15 секунд. Поэтому во втором cmd-окне можно неспешно: 1) запустить isql 2) ввести там: Код: plaintext Повторил эти действия 4 раза. Результат: окно-1 реагирует на delete from mon$statements (от окна-2) не сразу, а только через 20-30 секунд, а в последний раз - почти 4 минуты(!) trace Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Кажется, это как-то связано с тем, сколько времени прошло от момента старта select'a в окне-1 до момента ввода delete from mon$statements в окне-2. Есть подозрение, что чем дольше давать поискать окну-1 первую запись, тем дольше у него будет "отходняк" при получении команды обруба. В общем, таблица-миллиардник и на ФБ-3 продолжает оставаться "серьёзным игроком" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 01:48:56 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Да, и еще. Среди 1 млрд строк есть 12, у которых в поле `h`, заполнявшемся как hash(s), записаны дубли. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Точнее сказать пока не могу - надо вытряхнуть данные. Пытался создать индекс по `h` - умерло: top показывал, что процесс firebird вообще ни хрена не делает, а isql что-то там пытается грузить, но как-то вяло. Сейчас просто натравлю запрос на извлечение по natural'у. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 09:26:33 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидлибо uuid_to_char(gen_uuid()) способен сгенерить 12 дублей на 1 млрд, либо хэши от этих 36-символьных строк могут совпадать ввиду коллизий (что странно на такой длине текста).Второй вариант. Коллизии, и только они. Вот список 12*2 uuid-строк, по которым hash выдает одинаковые значения:HS1037847731177921477EA00D44E-64C9-48C0-8438-FA04AA662E051037847731177921477F3EDA604-DD22-449D-A5F2-6DB4204082F5112473669458128058212DB8574-AADC-45FA-A24B-CC4911CDC00F112473669458128058250F6FD32-7FEB-4E2A-A61C-5519467248A6116515253492760935BC4BB00D-8EA6-437F-B7EC-EBF25DF7D4F7116515253492760935D4DDAEA1-8E0A-4B5E-9D6C-E3874B83EB272389228281869342534585795-70B6-40F3-8859-B15851B2540A23892282818693425511DAF0B-FC44-4AB9-A8B3-CC6165897A0A261210683920379748E4622FF-9264-4285-8934-5B525CF2F9062612106839203797499CC7926-045F-40F2-A464-0AEFF07B52CF39144859051103730143AD095-6FEF-44E9-87D7-A135D24BC9E23914485905110373064BE5888-AE20-4218-A3A6-F492ACFAD28B4273141755562872243BF4105-5234-4662-903E-2EE9429E56A242731417555628722E5F4CCC6-4CE3-4301-BABE-14C83A58C8DB90726006275812495038D18A5B-46E5-4C1D-8D36-3180A280E75690726006275812495070979264-2CC6-4BBE-8D0F-A7213B07CA5691679789702124605138285431-2C6F-468B-B7CA-4A83F8666E1391679789702124605194BF2544-F47A-4209-B410-326597F1E5639609765703549069971D24B10E-EBE3-44EB-AA78-4A57167CD645960976570354906997736DA53E-4335-40E6-B879-D23218825FA5969133800131399768D4D0DAAF-0074-42F8-9487-08573F84EBD8969133800131399768FE7BF9D2-0755-425D-8554-234B26BDCBB8971045795196823170B115F1BB-6176-47AA-A7CE-60322918C472971045795196823170E7254E81-3D9B-48C2-9A65-AA27475B303BСтранно как-то это, на длине в 36 знаков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 10:08:10 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидТогда откуда лезут эти три минуты(!), чтобы дать в итоге облом по no permission for SELECT ? насколько я помню - запрос сначала полностью препарится, потом проверяются права. А препарирование включает в себя скан всех PP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 21:13:31 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrА препарирование включает в себя скан всех PP. (я и то помню это по тесту терабайтной БД). а вроде предполагались какие-то улучшения в этом плане? Я именно про скорость prepare. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 21:16:05 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdv, предполагались, но пока есть по ним некоторые сомнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 21:22:50 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидТогда откуда лезут эти три минуты(!), чтобы дать в итоге облом по no permission for SELECT ? насколько я помню - запрос сначала полностью препарится, потом проверяются права. А препарирование включает в себя скан всех PP.Погоди-ка... вот есть запрос: select ляляля from тратата1 join тратата2 on ... Разве нельзя на стадии prepare сразу же вытряхнуть имена объектов (тратата1, тратата2), к которым хотят лезть, и тут же, до всяких там PP-вычиток, проверить права на них ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 21:45:26 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, это все делается на стадии препаре, просто в разные фазы. Простого парсинга тут недостаточно, т.к. надо проверять весь граф поднятых запросов зависимостей. Да и вообще, не получается там по-другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 21:55:51 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrэто все делается на стадии препаре, просто в разные фазы. Простого парсинга тут недостаточно, т.к. надо проверять весь граф поднятых запросов зависимостей. Да и вообще, не получается там по-другому.А просвяти, плз: если запрос содержит обращения к 10 объектам БД, то что будет происходить при prepare: 1) парсер будет сначала вытряхивать одно имя за другим, НЕ проверяя права на них, до тех пор, пока не "распознает" 10-е имя; и только после получения 10-го имени начнётся проверка прав либо 2) парсер вытряхнет имя_1, затем тут же будут проверены права на него; дальше, если права есть, парсер вытащит имя_2 итут же будут проверены права на имя_2, и т.п. - ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 21:59:54 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, составляется весь список и потом проверяется оптом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:01:33 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrсоставляется весь список и потом проверяется оптомОК, с этим понятно. Но вернусь к первому вопросу: вот когда в запросе есть только 1 объект - почему для препарирования запроса надо лазить по всем PP ? Чем это вызвано ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:06:40 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидпочему для препарирования запроса надо лазить по всем PP ? Чем это вызвано ? склероз у тебя, хотя dataaccesspaths ты вроде неоднократно читал. по PP сервер вычисляет кардинальность таблицы, т.е. сколько там может быть записей (теоретически). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:09:07 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvТаблоидпочему для препарирования запроса надо лазить по всем PP ? Чем это вызвано ? склероз у тебя, хотя dataaccesspaths ты вроде неоднократно читал. по PP сервер вычисляет кардинальность таблицы, т.е. сколько там может быть записей (теоретически).не-е, это я помню! У мну вопрос простой: зачем он начинает считать "скока вешать граммов" до того, как поймёт, имеет ли он право вообще трогать сей товар! Почему нельзя сначала в rdb$-таблицы полезть и проверить, есть ли права на соотв-щую таблицу у того, кто её "хочет" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:13:22 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидУ мну вопрос простой: зачем он начинает считать "скока вешать граммов" до того, как поймёт, имеет ли он право вообще трогать сей товар! Почему нельзя сначала в rdb$-таблицы полезть и проверить, есть ли права на соотв-щую таблицу у того, кто её "хочет" ? нет, ты перескакиваешь с вопроса на вопрос. Prepare строит план и проверяет права. Зачем Prepare считывает PP? Чтобы узнать кардинальность таблиц и построить план запроса. Можно отделить в Prepare построение плана от проверки прав? Ответ тут 14629558 Увы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:15:41 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvМожно отделить в Prepare построение плана от проверки прав? Да фиг с ним, отделением. Таблоид-то спрашивает про очерёдность. Права проверяются на все объекты, задействованные во всех возможных ветках всех возможных планов. Если права на операцию нет, то проверка на это, произведённая чуть раньше (при добавлении объекта в список и граф) и выкинувшая исключение, сэкономит кучу времени. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:20:29 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvPrepare строит план и проверяет права.Если сначала строится план, и только после проверяются права, то выглядит это как-то... странно! Будешь ли ты оценивать время движения по платной дороге, не выяснив, есть ли у тебя хотя достаточно бабла в кармане для оплаты ? kdvЗачем Prepare считывает PP? Чтобы узнать кардинальность таблиц и построить план запроса.Да понимаю я это, разумеется. kdvМожно отделить в Prepare построение плана от проверки прав? Ответ тут 14629558 Увы.к сож-ю, ответ ДЕ не прояснил мне моцк:dimitrПростого парсинга тут недостаточно, т.к. надо проверять весь граф поднятых запросов зависимостей. Да и вообще, не получается там по-другому. Ну, подняли граф зависимостей, там 10 объектов. Что мешает сначала выяснить права на них, немедленно выдавая отказ в работе при отсутствии хотя бы одного из прав, а затем вычитывать PP ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:27:26 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Тут еще один таракан на тему скорости вылез. Пересоздал базу с нуля, поставил в ней FW = OFF, добавил кеш до 16384. Создал таблицу t(id int, s char(36)); Добавил в эту таблицу свой любимый млрд строк, поле `s` генерил через uuid_to_char(), в поле id записывал gen_id(g, 1). Добавил индекс: create index t_s on t(s); commit; А теперь хочу всё таки еще раз выяснить: нет ли сдублированных значений в `s`. И делаю запрос: Код: sql 1. 2. 3. Он молотил два часа и было нгепонятно, закончится это когда-нить или нет. Я срубил его и увидел по трейсу, что правильно сделал (см статистику!): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Товарищи! "Чё-то не того!" 632 тыс записей обмолочено за 6900 сек - это что же получается-то ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 00:24:06 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
PS. Добавил в условие join'a предыдущего запроса "дёргание" генератора, чтобы в другом окне хотя бы видеть скорость изменений: Код: plaintext 1. 2. Результат: ужасный кошмар. За полчаса обмолочено менее 180 тыс строк: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. И типичная картина из top'a в это время (да, я понимаю, что 4 Гб памяти мало - но пока это всё, что есть; но с серваком работаю я один): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 00:31:13 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, индекс T_S какого размера, в страницах? 1264903 read(s) как бы намекает, что он тупо не влезает в кэш, а значит читается каждый раз, с диска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 01:59:34 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvиндекс T_S какого размера, в страницах? 1264903 read(s) как бы намекает, что он тупо не влезает в кэш, а значит читается каждый раз, с диска.Индекс весит 9.1 млн страниц. Не понимаю, что тут фатального: "не влезает в кеш". В пром. системах полно таблиц-монстров, индексы которых не влезают в кеш - но ворочаются же. gstat -r Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 09:10:25 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, Ребята, миллиарды записей -- это не для таких СУБД. Не для традиционных. Только columnstore. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 10:07:06 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидЧто мешает сначала выяснить права на них, немедленно выдавая отказ в работе при отсутствии хотя бы одного из прав, а затем вычитывать PP ??Попытка выполнить запрос не обладая привилегиями почти наверняка "криминал", встречается относительно легитимных запросов крайне редко, ну допустим 1%, ради одного процента шулеров будешь перетряхивать всю проверку? Хотя с другой стороны очень легкий способ вызвать отказ в обслуживании. Вот ради превентивных мер против DOS может и стОит перетряхнуть? MasterZivРебята, миллиарды записей -- это не для таких СУБД. Не для традиционных. Только columnstore.Для или не для, но многие проблемы можно поймать только нагрузочным тестом превышающим рабочую нагрузку. Спрашивается нахрена котлы проверять давлением превышающим рабочее? вот и миллиард примерно для того же самого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 23:48:49 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
0xFFIvan_PisarevskyСпрашивается нахрена котлы проверять давлением превышающим рабочее? вот и миллиард примерно для того же самого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 00:37:01 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyХотя с другой стороны очень легкий способ вызвать отказ в обслуживании.я пока вижу одно: таблица в 1 млрд записей очень трудно ворочается. Она постоянно вытесняется на диск и "вычитка" PP становится явно узким местом. И даже select first 1 из неё запросто может стать гемором для бедного сервера. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Trace: ##### Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 01:36:29 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидBuffers = 16384 Какой мазохист такой базе даст такой мизерный кэш?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 01:42:19 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТаблоидBuffers = 16384 Какой мазохист такой базе даст такой мизерный кэш?..Он в начале был вообще дефолтным, 2048 :-) Ну, а сколько бы ты сам назначил ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 01:55:21 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Ясно же говорит: ТаблоидReads = 26771 Вот эту цифру надо как минимум удвоить. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 01:58:44 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
... не взлетает и при 65535: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. trace Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 02:03:12 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
... и при buf=250'000 результат - тоже печалько (разумеется, я поставил перед этим FileSystemCacheThreshold = 256K и рестартанул всё): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 08:13:21 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, Ты наивно ждешь эффекта от большого кеша при первом выполнении запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 10:10:16 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrТы наивно ждешь эффекта от большого кеша при первом выполнении запроса?нет, конечно :-) я всё к тому, что нерационально тратить время на вычитку PP, когда стало ясно, что у мну вообще нет прав на таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 10:19:33 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Увеличение кеша на такой базе вообще не помогает. Видимо, просто мало физической памяти. На "разогретой" базе (насколько этот термин вообще применим к файлу 115 Гб) с cache=250'000 ввожу запрос: Код: plaintext В другом окошке делаю: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 10:30:56 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидSQL> select first 1 t1.* from t t1 join t t2 on t1.s=t2.s and t1.id<t2.id and t1.id+gen_id(g,1)>=0Какой у этого запроса план? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 13:01:25 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
NickDeeТаблоидSQL> select first 1 t1.* from t t1 join t t2 on t1.s=t2.s and t1.id<t2.id and t1.id+gen_id(g,1)>=0Какой у этого запроса план? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 13:11:48 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Надо тут было проверить еще раз кое-что, на миллиарднике этом. И сразу вопрос вылез: запустил я создание индекса по полю varchar(8), ждал минут 40, вижу в top'e: ФБ почти ничего не делает. Запустил тогда скрипт с запросом к mon$-таблицам каждые 10 сек : mon$-запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. Затем открываю отчет в экселе, и диву даюсь: 1) счетчик reads снова НЕ меняется (такое уже было вроде!) 2) счетчик fetches меняется просто нищенскими темпами - см аттач, графа diff:fetches. Кроме того, изменение числа фетчей совершенно неравномерное. Пытаться вычислить среднее тут - бесполезняк, разброс просто сильнейший. пример Код: plaintext 2 dimitr: может ли ФБ показывать что-то типа статистики ожиданий, т.е. чтобы точно было видно: вот тут у нас 90 фетчей, но мы ждали ответа от "чего-то там" 100500 миллисекунд. PS. Индекс в итоге строился почти час (3504 сек): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 12:09:52 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидможет ли ФБ показывать что-то типа статистики ожиданий сейчас нет, в недалеком будущем - возможно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 12:41:48 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitr, чек мыл, плз. (Что-то не врубаюсь: запрос к mon$-таблицам в течение работы пяти DML длится по 3-4 минуты. То ли огромный объём IO и ожидание сбросов на диск так сильно влияет, то ли еще чего. Но в целом стало получше, чем было описано в тикете 4179 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 16:04:11 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
И всё-таки снова вопрос про откаты после срубания незавершенных DML, в том числе при шатдауне базы. Нельзя ли подправить консерваторию, чтобы движок начинал записывать в firebird.log два факта: 1) начало обратной перемотки (для каждой таблицы) 2) окончание этой перемотки. Пусть он делает это хотя бы только при shutdown'e, чтобы на это мог смотреть ДБА, который ввёл шатдаун и собирается базу копировать/паковать и проч. В идеале - также при delete from mon$attachments / mon$statements. Ибо запустил я с единственного isql'я запрос на апдейт 1 млрд строк (в 16:03), затем через два часа отправил базу в шатдаун: Код: plaintext 1. 2. И вижу уже 20 минут , что ФБ до сих пор держит файл базы открытым (lsof показывает так), хотя активность процесса ФБ при этом обманчиво нулевая: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В трейсе для DML-коннекта - разумеется, тоже тишина. Прочухается только после полной "отмотки взад". Неправильно это! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 18:29:53 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, не место этому в firebird.log. Я понимаю если бы ты это в трейсе попросил выводить, да и то для каждой таблицы сомнительно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 18:36:53 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов Денисне место этому в firebird.log. Я понимаю если бы ты это в трейсе попросил выводить, да и то для каждой таблицы сомнительно...А что с ним станется, с firebird.логом, опухнет и лопнет ? Вот я останавливаю базу шатдауном - и что, мне трейс перед/после этого запускать, дабы увидеть сообщение о завершении отмотки ? (да и много ли персон из почтеннейшей публики запускают у себя трейс-то ?...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 18:45:00 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидПрочухается только после полной "отмотки взад"Ну-с, встречаем. Через 40 минут: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Число апдейтов и бекаутов - смешное, 296 тыс. Фетчей - тоже ерунда, 1.3 млн. Чего он там сопли жевал столько времени - хз. DDL таблицы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. gstat -r до начала bulk-DML'ей: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 18:51:51 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, одно дело записать в firebird.log что шатдаун был, другое - пытаться туда засунуть информацию о внутренностях. Вот зачем это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 18:58:25 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов Денисодно дело записать в firebird.log что шатдаун был, другое - пытаться туда засунуть информацию о внутренностях. Вот зачем это?тогда уж инфу о GC тоже из лога убирать надо. Чем не внутренности ?... 0xFF. А про спам errno=104/110 я уж вообще не говорю - такие важнейшие события отражаются в логе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 19:08:11 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, хорошо представь себе у тебя 250 активных коннектов. Вдруг ты решил сделать полный шатдаун. Что будет содержаться в firebird.log в этом случае? Причём пользователи могут работать с разными таблицами. По поводу GC, errno=104/110 вроде бы есть тикет по разделению лога на несколько. Правда многим это не нравится. errno=104/110 не совсем спам они свидетельствуют о наличии проблем в сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 19:27:15 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид> Вот я останавливаю базу шатдауном - и что, мне трейс перед/после Таблоид> этого запускать, дабы увидеть сообщение о завершении отмотки ? Ага. А зачем тебе это сообщение-то? > (да и много ли персон из почтеннейшей публики запускают у себя трейс-то ?...) Вряд ли. Но запускающих шатдаун да ещё желающих увидеть при этом какие-то сообщения о каких-то отмотках в логе - на порядок меньше. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 20:05:19 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов Денисхорошо представь себе у тебя 250 активных коннектов. Вдруг ты решил сделать полный шатдаун. Что будет содержаться в firebird.log в этом случае? Причём пользователи могут работать с разными таблицами.а не надо путать активный коннект с активным (выполняющимся в момент выдачи шатдауна) стейтментом. Первых - да, полно. Вторых (при которых соб-сно и будет "отмотка взад") - хорошо, если десяток-другой будет. В oltp системах запросов хоть и много, но 99.9% из них - короткие. Дальше юзер тупо смотрит на результат или вводит там что-то в морде приложения. Симонов ДенисПо поводу GC, errno=104/110 вроде бы есть тикет по разделению лога на несколько. Правда многим это не нравится. errno=104/110 не совсем спам они свидетельствуют о наличии проблем в сети.Это в любом случае проблемы НЕ Firebird'a, а железячников. А про errno=10054 (под виндой, по кр. мере)- вообще песня. Достаточно из isql закрыть "крестиком" снять его pskill'ом, даже просто выйти из него по Ctrl- Break - всё, "произошла проблема, подробности смотрите в логе". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 21:34:22 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамАга. А зачем тебе это сообщение-то?Мну давно интересно, что будет с базой, если после шатдауна её тут же начать копировать куда-нить... Ну, то есть так: ФБ тихо дописывает в неё свои откаты срубленных BULK_DML'ей, а я чихал на это и копирую базу в этот же исторический момент на "внешний носитель" Жаль, что база с таблицей-миллиардником занимает больше половины диска, скопировать надо было для "домашнего просмотра" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 21:38:05 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидВот я останавливаю базу шатдауном - и что CORE-3809 можно уже удалять из трекера? А если нет, то какого ляда мы тут видим эти стенания? Ты проси или быстрый шатдаун или трейс медленного шатдауна, но оба вместе это уже шизофрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 21:52:05 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидВот я останавливаю базу шатдауном - и что CORE-3809 можно уже удалять из трекера? А если нет, то какого ляда мы тут видим эти стенания? Ты проси или быстрый шатдаун или трейс медленного шатдауна, но оба вместе это уже шизофрения.Быстрый шатдаун, после которого уже точно нет никакой записи в файл базы - важнее всего. Если же он недостижим (на сегодняшний день) и в момент шатдауна были срублены bulk_DML'и, то обязательно надо выводить хоть какое-то сообщение об этом. Если такого сообщения не выводить, нужно где-то в официальной доке отметить этот "артефакт" и сказать, следует ли ДБАям следить за ним или нет (попросту говоря: следует ли после шатдауна вводить пару раз lsof, дабы убедиться что база больше не держится ФБ-процессом). Даже если шатдаун срубит сразу 300 активных стейтментов (это сколько же тогда коннектов должно быть ? 3000 ?), сообщений будет 300*2 = 600 - не страшно, диск не переполнится. Моё мнение - место таким сообщениям в логе сервера, а не в трейсе. ЗЫ. И кстати! Этот тикет, 3809, он же не только про роллбаки, но и про невозможность в *линуксе* убить процесс ФБ командой /etc/init.d/firebird stop, которая выдает к тому же бравурное "ОК", а на самом деле процесс живой! И я видел это до самых недавних пор в трёшке, когда срубал 300-400 окон теста на массовые коннекты / ожидание ими вставки строки / принудительный их дисконнект. Как дело с этим на нынешнем снапшоте - не знаю, еще не проверял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 22:20:48 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, ты можешь сформулировать пользу этих сообщений в логе. Я вот например не вижу никакой. Вот что мне с того факта что при шатдауне было модифицировано такое то количество страниц в такой то таблице, началось это тогда то, закончилось тогда то. Как это вообще планируется использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 23:40:24 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов Денисты можешь сформулировать пользу этих сообщений в логе. Я вот например не вижу никакой. Вот что мне с того факта что при шатдауне было модифицировано такое то количество страниц в такой то таблице, началось это тогда то, закончилось тогда то.Если кто-то из Источников Света скажет, что базу Firebird после шатдауна всегда можно "упаковывать в чемодан", копировать куда-то и проч., несмотря на идущие ней откаты DML'ей - всё, вопрос закрываем. Если же шанс получения битой копии остается - польза от сообщений в логе будет как минимум при разборе полётов. Симонов ДенисКак это вообще планируется использовать?Я бы просто делал скриптом: 1) шатдаун базы: Код: plaintext 1. 2. 3. 4. 5. - и далее в этом же скрипте: 2) tail -f firebird.log - и смотрел бы, ЧТО ТАМ появляется. Если шатдаун пришелся именно на активные DML'и, то сообщение об откатах появится в логе сразу же . Если это сообщение будет типа такого: "<timestamp> start rollback changes on table T1, ip=192.168.12.34, connect # 2345, statement: <тут первые 300...500 букаф этого стейтмента>" - то ждём дальше "симметричного" ему сообщения об окончании по коннекту 2345. Базу можно считать действительно закрытой, только когда число сообщений с фразами "start rollback chanes" будет равно "finish tollback changes". ЗЫ. Ты вроде пытался поиграться DML'ями с табличкой-"миллиардершей" ? У тебя, ЕМНИП, диска тогда не хватило. Рекомендую-таки найти 100 Гб хотя бы. Сразу увидишь, что это за зверюга :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 00:09:23 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
"600 сообщений в логе", "не страшно", "диск не переполнится". Проникся. Таблоид> базу Firebird после шатдауна всегда можно "упаковывать в чемодан", копировать Таблоид> куда-то и проч., несмотря на идущие ней откаты DML'ей - всё, вопрос закрываем. При чём тут можно или нет и сообщения в логе? Автоматом ты их всё равно не сможешь анализировать. А если нужно тупо увидеть глазами "готово или нет", то нужно см. результат (output и err) самого gfix-а. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 00:40:33 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид> Мну давно интересно Т.е. интерес чисто теоретический и синтетический (не говоря уже о том, что крайне редкий на практике). Кстати, "закулисье" должно, наверное, воркэраундиться шатдауном сервера (не проверял). Для надежности. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 00:44:11 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам"600 сообщений в логе", "не страшно", "диск не переполнится". Проникся.В смысле ? Что так "пробрало" ? :-) Гаджимурадов РустамТаблоид> базу Firebird после шатдауна всегда можно "упаковывать в чемодан", копировать Таблоид> куда-то и проч., несмотря на идущие ней откаты DML'ей - всё, вопрос закрываем. При чём тут можно или нет и сообщения в логе?Если базу СТОПУДОВО МОЖНО копировать сразу после того, как gfix -shut вернул управление и я увидел в атрибутах гстата 'full shutdown' - то на сообщения о незавершенных откатах действительно можно покласть. Или я не прав ? Гаджимурадов РустамАвтоматом ты их всё равно не сможешь анализировать. А если нужно тупо увидеть глазами "готово или нет", то нужно см. результат (output и err) самого gfix-а.Это почему же ? Сделать цикл с интервалом 2-3 сек, который будет подсчитывать число "открывающих" и "закрывающих" (N1, N2) мессаг в логе и вякнет "Готово, копируй!" при обнаружении N1 == N2 - что, нереально сложно что ле ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 00:49:06 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамТаблоид> Мну давно интересно Т.е. интерес чисто теоретический и синтетический (не говоря уже о том, что крайне редкий на практике).Да как же "теоретический", когда я на нашем продуктиве видел ЭТО: gfix зашатдаунил базу, а lsof продолжал еще секунд 10 показывать, что её файл открыт. Раза два или три это было, но точно - видел. И если бы перед этим не изгалялся с нагрузочным тестом на развал индексов (а дело было в 2010, когда у нас missing entries попёрли, не к ночи будь помянуты!) - никогда бы и не узнал об этом "эффекте". Гаджимурадов РустамКстати, "закулисье" должно, наверное, воркэраундиться шатдауном сервера То есть, тупо вводом /etc/init.d/firebird stop ? Гаджимурадов Рустам(не проверял). Для надежности.В чём преграда, проверь! Если есть линух - запусти нагрузочный тест с DML'ями, окон 150-200. Дай ему помолотить полчаса-час и затем зашатдауни базу. И попробуй далее ввести: Код: plaintext 1. Результат, скорее всего, слегка удивит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 00:56:31 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, 1. зачем тебе её копировать ? 2. даже если копировать - есть nbackup 3. вот на это посмотреть Таблоидlsof продолжал еще секунд 10 показывать, что её файл открыт сложнее, чем писать какие-то парсеры каких-то логов ? Ты опять устраиваешь бурю в стакане воды. Займись чем-нить реально полезным, полно же дел вокруг... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 01:04:04 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид> Да как же "теоретический" Да вот так. Во-первых, на практике такое если и встречается, то редко. Во-вторых, ну молотит - тебе-то что? Перебьёшься 10 секунд. > В чём преграда, проверь! Шутник. Во-первых, фб на линуксе у меня под рукой сейчас нет, а ставить лень. Во-вторых, никаких нагрузочных тестов на 150-200 окон длительностью полчаса-час ради такой фигни я в принципе не стал бы запускать. > Результат, скорее всего, слегка удивит. Так если ты его уже проверил - просто напиши, что получилось. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 01:04:43 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид> В смысле ? Что так "пробрало" ? :-) 600 любых сообщений в логе. Любых. > Или я не прав ? А ХЗ, не уверен. Допустим, не можешь. Дальше что? > нереально сложно что ле ? Я знаю, что у тебя энергии и времени немеряно, но не проще ли тупо поставить паузу на минуту и проверить этот самый lsof ? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 01:07:12 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvlad1. зачем тебе её копировать ?потому что несколько раз возникали ситуации, когда надо поиметь максимально актуальную копию продуктива, причём быстро (=> b/r не катит). Ночная копия - да, была, но косяк вылез именно на данных, вбитых сегодня. hvlad2. даже если копировать - есть nbackupЭто я попозже стал делать. Хороший способ, но... там главное всё время быть рядом с экраном и следить, чтобы скрипт обязательно дошёл до строки с 'nbackup -N', а не то "снег башка упадёт" :-) hvlad3. вот на это посмотреть Таблоидlsof продолжал еще секунд 10 показывать, что её файл открыт сложнее, чем писать какие-то парсеры каких-то логов ?парсер тем и хорош, что "смотрит" за меня и "глаз" у него не замыливается. Один раз помучился, отладил - дальше спи спокойно. hvladТы опять устраиваешь бурю в стакане воды. Займись чем-нить реально полезным, полно же дел вокруг...я веду непримиримую борьбу за ликвидацию записи в файл базы после шатдауна! Разве это не реально полезнейшая задача ?! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 01:28:40 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидя веду непримиримую борьбу за ликвидацию записи в файл базы после шатдауна!А при чём тут спам в логе ? И разве тебе не сказали много раз, что откаты при шатдауне будут оптимизированны ? Или тебе нравится бесконечно ковырять эту тему ? ТаблоидРазве это не реально полезнейшая задача ?! :-)Я бы её даже в первый десяток актуальных не ставил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 01:32:37 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамТаблоид> Да как же "теоретический" Да вот так. Во-первых, на практике такое если и встречается, то редко.Редко, не спорю. Только мне последствия интересны, а не "частота встреч" :-) Гаджимурадов РустамВо-вторых, ну молотит - тебе-то что? Перебьёшься 10 секунд.Кхе! это на нашем продакшене было 10 сек, и то - по памяти говорю, могу и ошибаться. А если бы кто запустил что-то "могучеее", то и несколько минут могло бы быть. Посмотри выше - и 40 минут можно при желании "сбацать" :-) Гаджимурадов РустамВо-вторых, никаких нагрузочных тестов на 150-200 окон длительностью полчаса-час ради такой фигни я в принципе не стал бы запускать.То есть, ты ТОЧНО уверен, что запись в базу после шатдауна ничем не грозит базе, которую в этот же момент куда-то там "откладывают" в виде backup'а. Я правильно тебя понял ? Гаджимурадов Рустам> Результат, скорее всего, слегка удивит. Так если ты его уже проверил - просто напиши, что получилось.Дык вот же , полтора года уже как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 01:36:14 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvladТаблоидя веду непримиримую борьбу за ликвидацию записи в файл базы после шатдауна!А при чём тут спам в логе ?Спам - это как раз нынешние errno=104/110. hvladИ разве тебе не сказали много раз, что откаты при шатдауне будут оптимизированны ? Или тебе нравится бесконечно ковырять эту тему ?Я прекрасно понимаю, что если они и будут оптимизированы, то еще не скоро. И потому спросил: до того, как состоится эта оптимизация, - нельзя ли сделать вот эту фичу ? Насколько это сложно вообще: добавить вывод в лог таких сообщений ? hvladТаблоидРазве это не реально полезнейшая задача ?! :-)Я бы её даже в первый десяток актуальных не ставил...Да пускай себе торчит в разряде миноров, раз это от Царя Гороха так. Но хотя бы вывод в лог ФБ добавь(те), ну ?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 01:43:38 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамТаблоидЕсли базу СТОПУДОВО МОЖНО копировать сразу после того, как gfix -shut вернул управление и я увидел в атрибутах гстата 'full shutdown' - то на сообщения о незавершенных откатах действительно можно покласть. Или я не прав ?А ХЗ, не уверен. Допустим, не можешь. Дальше что?Если НЕ могу покласть на такие сообщения ?? сам понимаешь: тогда они точно ДОЛЖНЫ быть в логе, а не только в трезвом мозгу ДБАя. Ибо если он забил на них и начал копировать базу, а дальше продакшен слетел и актуальной копией является "та самая", и она оказалась битой, то... телефон kdv на у него сайте вроде всегда висит Гаджимурадов РустамЯ знаю, что у тебя энергии и времени немеряно, но не проще ли тупо поставить паузу на минуту и проверить этот самый lsof ?ну так я и делал именно это! Но разве ты не видишь, что тут "чел. фактор" ? Ну забыл бы я однажды про это, или кто другой вместо мну стал бы шатдаунить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 01:51:11 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид> Только мне последствия интересны, а не "частота встреч" :-) Последствия чего? Ну выстрели себе в ногу - тоже редко, тоже интересны последствия будут. > Кхе! это на нашем продакшене было 10 сек, и то - по памяти говорю, могу и ошибаться. > А если бы кто запустил что-то "могучеее", то и несколько минут могло бы быть. > Посмотри выше - и 40 минут можно при желании "сбацать" :-) При желании можно и буй шар проглотить, да. Могучего можно пересчитать по пальцам, да и те живут на репликаторах да на nbackup-ах и живую БД посреди дня шатдаунить не собираются. А если вдруг почему-то и соберутся - будут делать это ручками, а не никакой не автоматикой/парсером. И да, обождут 10 секунд, минуту, если надо - две. > Я правильно тебя понял ? Нет, неправильно. Я сказал то, что сказал. Кому надо - подождёт. Кому чешется - тот ССЗБ. Кстати, с оригиналом ничего и не будет, скорее всего, в отличие от копии. Но зуб никто не даст. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 03:25:45 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид> сам понимаешь: тогда они точно ДОЛЖНЫ быть в логе Нет, не понимаю. В логе этому не место. Повторюсь, если нужна развернутая статистика (любая) - место ей в output и err gfix-а, а не в логе сервера. > Ибо если он забил на них и начал копировать базу А смысл о чём-то дальше говорить, если он на них забил? Ну он точно так же на сообщения в логе может забить? Дело не только в том, что ты пытаешься бурю в стакане замутить, как сказал Влад, мало того - и буря-то толком не получается. > Но разве ты не видишь, что тут "чел. фактор" ? Нет, не вижу. Чем отличается человеческий фактор "посмотрел lsof" или "посмотрел gfix output" от "посмотрел лог" (при том, что лог не твой) ? Как по мне, так второе и даже первое много лучше и удобнее третьего, которое ты просишь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 03:31:20 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамДело не только в том, что ты пытаешься бурю в стакане замутить, как сказал Влад, мало того - и буря-то толком не получается.Ладно. Раз все спокойны на этот счет, значит проблема действительно была только в моей голове. Оставим эту тему, но надеюсь, что тот тикет когда-нить перейдёт в resolved. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 10:54:47 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидЕсли кто-то из Источников Света скажет, что базу Firebird после шатдауна всегда можно "упаковывать в чемодан", копировать куда-то и проч., несмотря на идущие ней откаты DML'ей - всё, вопрос закрываем. Лучше бы тогда попросил что бы Код: plaintext возвращало управление только по окончанию всех откатов. Уж куда проще для твоих скриптов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 12:09:37 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисЛучше бы тогда попросил что бы Код: plaintext возвращало управление только по окончанию всех откатов. вообще-то, в свежих билдах так оно и должно быть. И я несколько удивлен, что это не так. Так что предлагаю Таблоиду вынести доказательства этого вопроса в отдельный топик. А то "кони, люди" в этой теме начинают утомлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 12:21:11 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrСимонов ДенисЛучше бы тогда попросил что бы Код: plaintext возвращало управление только по окончанию всех откатов. вообще-то, в свежих билдах так оно и должно быть. И я несколько удивлен, что это не так. Так что предлагаю Таблоиду вынести доказательства этого вопроса в отдельный топик.Дык вот же, вчерась ещё. И ниже чуток, когда я дождался таки через 40 минут. ЗЫ. А я - наоборот, сильно бы удивился, если gfix -shut стал бы синхронным и не вертал управление в ось до полного завершения откатов. Это наверняка было бы записано в моей любимой утренней газете , но там тишина пока что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 12:32:19 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, попрошу на кошках вменяемого размера пример, твой миллиард никто в здравом уме заливать не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 12:48:10 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrпопрошу на кошках вменяемого размера пример, твой миллиард никто в здравом уме заливать не будетну так там не миллиард апдейтов было, а гораздо меньше. Просто ему тяжко было обновлять два индекса, КМК, вот он и застрял с откатами на такое время. Кому интересно - залейте у себя 200-300 млн записей в такую же таблицу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Затем делаем следующее (с предварительно запущенным трейсом): session #1 isql 192.168.99.44/3330:t10e9 -n | mtee /t isql_log.txt 12:34:43.311 Database: 192.168.99.44/3330:t10e9 12:34:43.311 SQL> set plan on; set stat on; update t set s01=s02, s02=s01; 12:36:12.592 PLAN (T NATURAL) session #2 запускаем shell-скрипт, который в цикле будет запрашивать мон-таблицы, с интервалом 10 сек. Запрос этот приведен выше в этом топеге, впрочем - вот, еще раз: askmon.sql Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. askmon.sh Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Дальше даём поработать минут 10, больше не нужно. session #3 шатдауним базу, с логированием моментов времени: db_shutdown.sh Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. Итак, управление в ось из gfix -shut вернулось через 32-23 = 9 секунд. А теперь смотрим в isql-окно. У мну в нём показано вот это: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. А еще смотрим в лог скрипта, запрашивавшего мон-таблицы, и обращаем внимание на моменты времени, когда он запускал isql и возвращался из него. Но только на те моменты, которые уже после шатдауна ( 12:43:32 ) были: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Ну, и наконец - данные трейса. Вот старт DMl-стейтмента: 12:33:12 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Вот я gfix'ом сказал базе "спать!": 12:43:25 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. А вот завершение DML-откатов: 12:45:56 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ИТОГО: gfix -shut вернул управление, но движок после этого еще 2.5 минуты продолжал запись откатов. И еще раз повторю. Для воспроизведения сего не надо иметь таблицу в 1 млрд записей. Сделайте 200-300 млн, навесьте 2-3 индекса и запустите апдейт, включающий эти индексные поля. Дайте ему промолотить 10 минут. ЗЫ. Делал на LI-T3.0.0.30661 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 13:26:23 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид Код: plaintext 1. 2. 3. 4. 5. 6. 7. При pagesize = 16384, двух индексах и глубине каждого = 3. Жесть, короче!.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 13:32:23 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, ну на 3.0 понятно. Туда некоторые вещи могли забыть портировать. Ты проверь на последнем 2.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 13:34:33 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, я для кого просил делать это в отдельной теме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 13:35:54 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидgfix -shut вернул управление, но движок после этого еще 2.5 минуты продолжал запись откатов движок ли? FW ON или OFF? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 14:03:46 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидgfix -shut вернул управление, но движок после этого еще 2.5 минуты продолжал запись откатов движок ли? FW ON или OFF?FW=OFF (а я же высылал тебе эту базейку вчера...). Но если надо, могу и на ON проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 14:28:46 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, проверь, оно может тебя удивить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 14:31:14 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
dimitrпроверь, оно может тебя удивить...Хорошо, проверю. Сделал новый топег на эту тему, как ты сказал. Результаты выложу там. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 14:36:36 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисТы проверь на последнем 2.5ну проверь сам-то, на 2.5. Ты же грозился вроде с большой таблицей поиграться, не ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 14:40:31 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, дык игрался уже со 10E8. И таки да откаты не очень быстры, но их же обещали ускорить. Про миллиард записей в таблице во время подготовки запроса вроде Дмитрий говорил, что в этом направлении ещё ничего не сделано. Вот сделает Влад экстенты, асинхронный IO и мультиблочное чтение тогда можно будет посмотреть, а пока и без того есть много мест для тестирования. Хотя экстенты обещались только для DP, может и PP будут выделятся группами. а это теоретически позволит ускорить первую подготовку запроса. P.S. Если я ересь написал просьба меня поправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 15:33:25 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисПро миллиард записей в таблице во время подготовки запроса вроде Дмитрий говорил, что в этом направлении ещё ничего не сделано. Вот сделает Влад экстенты, асинхронный IO и мультиблочное чтение тогда можно будет посмотреть, а пока и без того есть много мест для тестирования. Хотя экстенты обещались только для DP, может и PP будут выделятся группами. а это теоретически позволит ускорить первую подготовку запроса.Но я не про подготовку запроса говорю. Она тут вообще мало интересна, да и на разогретой базе-миллиарднице выполняется за 2-3 секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 15:40:05 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоид, вообще-то в начале темы разговор был именно об этом. Но ты как всегда перевёл её в другое русло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 15:43:26 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов Денисвообще-то в начале темы разговор был именно об этом. Но ты как всегда перевёл её в другое русло.В этом топеге, начатом в ноябре 2012, вскрылось много чего. Задержки в препарировании из-за большого числа PP - это только одна из тем. Я возобновил разговор вчера с вопросом об отражении в статистике времени ожидания IO, а затем уже спросил про "отмотки назад". Все эти артефакты объединены общим: таблицей большого размера. Выносить в отдельный топег каждый под вопрос, возникающий в ЭТОЙ базе, смысла не вижу никакого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 15:56:17 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидВыносить в отдельный топег каждый под вопрос, возникающий в ЭТОЙ базе, смысла не вижу никакого.Даже я, когда общаюсь с "нашим" разработчиком, периодически дроблю единую (для нас) проблему на несколько. И это - платная поддержка. А здесь - форум, которому не очень интересно отслеживать "внутреннее состояние объекта Таблоид". Поэтому разумным является или личное общение или, всё-таки, дробление тем с предварительным обдумыванием на тему "а надо ли вообще спрашивать публично?". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:01:34 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovДаже я, когда общаюсь с "нашим" разработчиком, периодически дроблю единую (для нас) проблему на несколько. И это - платная поддержка. А здесь - форум, которому не очень интересно отслеживать "внутреннее состояние объекта Таблоид". Поэтому разумным является или личное общение или, всё-таки, дробление тем с предварительным обдумыванием на тему "а надо ли вообще спрашивать публично?".А ты тут за весь форум вещаешь, что ле ? я и не знал, что коллективный разум теперь в твоей персоне воплощен :-) Прежде, чем спрашивать, я всегда делаю проверку. Дважды. А затем стараюсь писать вопрос так, чтобы не нужно было лезть за предысторией куда-то вверх в этом же топике. Либо же тынц на пост добавляю - но в любом случае делаю так, чтобы не нужно было долго вспоминать "контекст беседы". В упор не понимаю, для чего плодить новый топег, если старый не утонул и отклонение от его темы незначительное. ЗЫ. Да, и насчет публичности. Тебе, наверное, платный саппорт помогает, либо в ФБ всё давно ясно и понятно. Оттого тебя с вопросами тут и не видно (5 топиков за 5 лет :)). У нас такого саппорта никогда не было, а база продакшена оказалась сразу сильно нагруженной, плюс сумасшедшие огрехи разрабов клиентской части приложения, плюс идиотизм проектировщика схемы (его я бы лично убил об стенку). В то время 2.5 еще только как RC-2 был, а на 2.1 всё просто помирало (семафоры, кажись, проблемы вызывали - не помню уже). Перешли мы на этот 2.5 RC - и оказалось, что поддержку по нему можно спрашивать только тут, у Влада или ДЕ. ЗЗЫ. Не было бы Влада и ДЕ на этом форуме - соскочили бы с ФБ очень многие. ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:34:22 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, да нет как раз многие вещи надо публично обсуждать. И Таблоид правильно делает. Правда иногда слишком увлекается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:38:18 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидВыносить в отдельный топег каждый под вопрос, возникающий в ЭТОЙ базе, смысла не вижу никакого.Вот тебе смыслы: 1. невозможно перечитывать эти 7 страниц (а ведь их будет больше), в поисках деталей теста или проблемы, перескакивая с пятого на тридцать пятое 2. элементарно забыть\потерять какую-то из проблем, рассыпанных по этим страницам и закопанным в потоке флуда и других проблем Достаточно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:43:01 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:43:16 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
hvladТаблоидВыносить в отдельный топег каждый под вопрос, возникающий в ЭТОЙ базе, смысла не вижу никакого.Вот тебе смыслы: 1. невозможно перечитывать эти 7 страниц (а ведь их будет больше), в поисках деталей теста или проблемы, перескакивая с пятого на тридцать пятое 2. элементарно забыть\потерять какую-то из проблем, рассыпанных по этим страницам и закопанным в потоке флуда и других проблем Достаточно ?А чем поиск ВНЕ топика, т.е. в оглавлении тем, лучше ?! в заголовок темы часто не затолкаешь всего, что надо! я по-максимуму стараюсь тему сделать информативной, но с течением времени всё равно забываю даже обрывки её формулировки. Искать в итоге приходится "нырянием" в каждый "подозрительно похожий" топик - т.е. опять ВНУТРЬ заходить надо. Впрочем, как хотите, джентльмены. Желаете "фрагментацию" - будет пять топиков с перекрестными ссылками друг на друга, и все - вокруг одного и того же миллиарда записей (например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:52:02 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисИ Таблоид правильно делает. Правда иногда слишком увлекается..."Тост должен быть кратким, как выстрел". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:52:30 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
"Желаю, чтобы все!" - ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:57:31 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов Денис> да нет как раз многие вещи надо публично обсуждать + много Симонов Денис> И Таблоид правильно делает Смотря что. Много чего и неправильно, о многом уже и говорилось. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 17:35:20 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
kdvТаблоидпочему для препарирования запроса надо лазить по всем PP ? Чем это вызвано ? склероз у тебя, хотя dataaccesspaths ты вроде неоднократно читал. по PP сервер вычисляет кардинальность таблицы, т.е. сколько там может быть записей (теоретически). Во наконец то. Ему надо теоретическое значение, тогда почему не прилепите в таблице поле в котором для сервера теоритически будут добавляться и удаляться количества записей и не надо будет бегать чего то пересчитывать каждый раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 18:32:42 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Евгений Болтикпочему не прилепите Увеличение ввода-вывода - тормоза. Горячая точка - большие тормоза. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 18:38:18 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидdimitrПростого парсинга тут недостаточно, т.к. надо проверять весь граф поднятых запросов зависимостей. Да и вообще, не получается там по-другому. Ну, подняли граф зависимостей, там 10 объектов. Что мешает сначала выяснить права на них, немедленно выдавая отказ в работе при отсутствии хотя бы одного из прав, а затем вычитывать PP ?? Я так понимаю можно это сделать, но это не надо т.к. таких ситуаций 1 на миллион, а переделок куча. Обычно когда кто то ломится получить от сервера у него есть на это права. Хотя тоже согласен нафига чет делать если нет доступа. Есть единственная засада накладные расходы на дерганье по отдельности 10 объектов по сравнению с 1 дерганьем но всех данных. Я с таким сталкивался. Понимаешь когда система слабенькая и видно как тормозят отдельно идущие запросы. Связал в один пучек и обалдел просто раньше лень было писать и нужды не было. 10 это все равно что 10 раз препаре если я и понимаю только помноженное на дополнительные запросы со своими препаре. От суда 1 боооольшой препар, но относительно быстрый. Я прав ГУРУ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 18:46:09 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕвгений Болтикпочему не прилепите Увеличение ввода-вывода - тормоза. Горячая точка - большие тормоза. А вот тут поподробней с чего бы это тормоза. Пусть даже будет 65000 таблиц в базе это настолько мало по сравнению с данными. Дергаться та будут одни и те же строки. Я понимаю что мам блокировки и т.п. но это можно решить теми же способами что ты с агрегатами предлагал мне почитать. Зато оценка на порядки будет быстрей, не надо будет IO лишние делать. Или может мы друг друга не поняли ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 19:10:44 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Евгений Болтик10 это все равно что 10 раз препаре если я и понимаю только помноженное на дополнительные запросы со своими препаре. От суда 1 боооольшой препар, но относительно быстрый.В firebird'e затраты на prepare - ничтожные . ЗЫ. А kdv в том топике оказался прав , но я это оценил только после знакомства с миллиардершей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 19:20:09 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovУвеличение ввода-вывода - тормоза. Горячая точка - большие тормоза. 2 DS : возможно, он говорит о периодически обновляемых (встроенным планировщиком ?) оценках: 1) кардинальности таблиц 2) гистограмм распределения данных. Такие обновления (например, раз в сутки ночером) не могут быть "горячей точкой". Но это в ФБ-3 если и будет, то очень нескоро, КМК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 19:25:04 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоидвозможно, он говорит о периодически обновляемых (встроенным планировщиком ?) оценках Пока он не сформулирует своё предложение точно и не изложит его полными предложениями, ни ты, ни я это не узнаем. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 19:30:43 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидЕвгений Болтик10 это все равно что 10 раз препаре если я и понимаю только помноженное на дополнительные запросы со своими препаре. От суда 1 боооольшой препар, но относительно быстрый.В firebird'e затраты на prepare - ничтожные . ЗЫ. А kdv в том топике оказался прав , но я это оценил только после знакомства с миллиардершей Я не полную картину тогда раскрыл. Каждый препар+данные 9 таких были препаре и получение данных о доступе, а 10 получили а доступа нет. То есть получается дерганье по 1 строке данных накладней чем за раз вернуться все 10 и их проверят на доступ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 19:35:14 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикЯ не полную картину тогда раскрыл. Каждый препар+данные 9 таких были препаре и получение данных о доступе, а 10 получили а доступа нет. То есть получается дерганье по 1 строке данных накладней чем за раз вернуться все 10 и их проверят на доступ.Мне ничего не понятно. Нельзя ли хотя бы знаки препинания расставить, да просто не торопиться при печати и перечитывать своё сообщение в предпросмотре, т.е. _до_ публикации ? (без обид, плз) ЗЫ. Лично я убедился на таблице в 10Е9 строк, что когда PP отсутствуют в кеше, то затраты на их "вычитку" могут длиться 20-30 сек. Но дальше этих затрат нет, там миллисекунды. До тех пор, ес-сно, пока таблицу из кеша кто-то не вытолкнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 19:45:06 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Таблоиддальше этих затрат нет, там миллисекунды. А, случайно так, не потому, что полученное значение кэшируется где-нибудь в кэше метаданных?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 19:51:21 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТаблоиддальше этих затрат нет, там миллисекунды. А, случайно так, не потому, что полученное значение кэшируется где-нибудь в кэше метаданных?..Нет, это кеш операционки. Можно выйти из isql'я, мучительно читавшего PP (и дочитавшего таки), рестартовать ФБ, затем войти опять - и вычитка уже будет быстрой, без тормозов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 20:01:49 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидDimitry SibiryakovУвеличение ввода-вывода - тормоза. Горячая точка - большие тормоза. 2 DS : возможно, он говорит о периодически обновляемых (встроенным планировщиком ?) оценках: 1) кардинальности таблиц 2) гистограмм распределения данных. Такие обновления (например, раз в сутки ночером) не могут быть "горячей точкой". Но это в ФБ-3 если и будет, то очень нескоро, КМК. Вроде на бету тройки запланировано CORE-1082 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 20:32:18 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисВроде на бету тройки запланировано CORE-1082 псип! ("голосуем, а то проиграем!") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 20:44:55 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ТаблоидЕвгений БолтикЯ не полную картину тогда раскрыл. Каждый препар+данные 9 таких были препаре и получение данных о доступе, а 10 получили а доступа нет. То есть получается дерганье по 1 строке данных накладней чем за раз вернуться все 10 и их проверят на доступ.Мне ничего не понятно. Нельзя ли хотя бы знаки препинания расставить, да просто не торопиться при печати и перечитывать своё сообщение в предпросмотре, т.е. _до_ публикации ? (без обид, плз) ЗЫ. Лично я убедился на таблице в 10Е9 строк, что когда PP отсутствуют в кеше, то затраты на их "вычитку" могут длиться 20-30 сек. Но дальше этих затрат нет, там миллисекунды. До тех пор, ес-сно, пока таблицу из кеша кто-то не вытолкнет. без обид перечитываю ;). Сразу скажу чтобы не запутался речи про РР не было. Я не полную картину тогда раскрыл. Каждый препар+данные. Предположим прошли 9 таких препаре и получение данных о доступе, а 10-й получили в доступе отказано. То есть получается, дерганье даже по 1 строке данных о доступе накладней, чем за раз вернуться все 10 и их проверят на доступ. Но как ты понимаешь там не только доступ там еще и данные об индексах и т.п. Эту модель я понимаю, по той причине, что столкнулся с слабым VPN подключением и были запросы проверки доступа по объектно. В обычной сети все летало. Теперь получаю доступ сразу для всех объектов к которым будет доступ и + доп информацию которую дергал когда проверил доступ. Оказалось намного быстрей чем просто проверить доступ, а потом продолжить дальше дополнительные запросы. В более чем 18 раз быстрей стала загружаться программа. Опять же в обычной сети я этого прироста не вижу. Получается лопатил только для одного клиента. Зато он рад от 10 сек до 30 сек у него наточках подключаются. Если переложить это на сервер, то там сделано было так как сейчас сделано, по той причине, что тормозило раньше на том железе прошлого века. А сейчас мы спорим, что зачем так сделали. Единственное я не понимаю зачем все же РР туда так воткнули и почему так сделали подсчет РР. Харды же были медленные и можно было этот провал заметить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 20:58:34 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикХарды же были медленные и можно было этот провал заметить.Провал виден на среднем (по сегодняшним меркам) диске при числе записей, которое в прошлом веке казалось нереальным. В том числе - из-за ёмкости большинства тогдашних хардов. Первый тест "большегрузной базы" сделал kdv в 2009 (а не в прошлом веке). Таблица у него была еще больше: 3.2 млрд записей, 359 Гб (см тут , таблица ORDER_LINE). На вот это: kdv После открытия БД prepare занимает около 20 секунд . Правда, повторная операция prepare происходит мгновенно. Это понятно – серверу в первый раз после соединения к БД необходимо загрузить метаданные, а они для таблиц и индексов находятся в очень отдаленных уголках файла БД.- я не обратил тогда никакого внимания, пока сам не упёрся в этот "артефакт". Однако есть подозрение, что в тесте kdv всё идет "от SYSDBA", т.к. никакого упоминания про недоступные объекты и время, потраченное на "осознание" этой недоступности, нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 21:20:47 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Грустно как-то. Почитал топик и решил провести подобные эксперименты с SQLite. SQLite конечно не версионник и не многопользовательская СУБД, но всё равно было интересно, насколько быстро оттуда будут работать запросы, при условии, что они себя позиционируют как СУБД для маленьких объёмов данных. Сделал в базе одну таблицу Код: sql 1. 2. 3. 4. 5. value1 и value2 заполнил рандомно, id - по автоинкременту. Всего 3 миллиарда записей. База получилась 45 Гб. Больше не стал пихать, т.к. на диске кончилось место. Перезагружаю комп. Первый запрос: Код: sql 1. время выполнения 1.3 мс O_o Повторно этот же запрос выполняется менее чем за 0.2 мс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2013, 12:46:25 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ArtDenSQLite конечно не версионник и не многопользовательская СУБДСравнение тёплого с липким. Тогда бы уж лучше на Cache` попробовали (только не в режиме прямой работы с глобалами, когда 100500 млн строк за 1 сек вставляются; этот фокус тут не прокатит :)). Они хотя бы утверждают, что многопользовательские (правда, не версионник, а блокировочник). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2013, 13:01:11 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ArtDenid - по автоинкременту. Всего 3 миллиарда записей. А какое значение стало у Id сразу после 2 147 483 647? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2013, 13:23:02 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
NickDeeА какое значение стало у Id сразу после 2 147 483 647? :) Правильное стало :) Для кого-то это будет открытием, но SQLite хранит целые числа полем переменной длины от 1 до 8 байт в зависимости от значения поля: http://sqlite.org/datatype3.html авторINTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2013, 13:33:07 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
ArtDen Всего 3 миллиарда записей. База получилась 45 Гб. Больше не стал пихать, т.к. на диске кончилось место. По поводу объемов, я перегнал свою экспериментальную базу из FB в SQlite обьем базы меньше в 2 раза при той-же структуре. Сейчас база SQLite весит более 350 ГБ, глюков и сбоев не замечено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2013, 22:44:25 |
|
||
|
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
|
|||
|---|---|---|---|
|
#18+
Sheezя перегнал свою экспериментальную базу из FB в SQlite обьем базы меньше в 2 раза при той-же структуре. Сейчас база SQLite весит более 350 ГБ, глюков и сбоев не замечено....при одновременной работе 300 пользователей, правильно ведь ? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2013, 22:58:21 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1564260]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
177ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
255ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 661ms |

| 0 / 0 |
