|
|
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hi all. Дано: новая база (alias = huge_noext), page_size=8K, FW = OFF, buffers=512K, LI-T3.0.0.30824, SuperServer. Изменённые параметры firebird.conf: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В базе создаются мастер и деталь таблицы, связанные FK. Кроме того, на каждую таблицу навешено еще по 2 "простых" индекса. Запускаю скрипт, вставляющий большое число строк (2 млн в мастер таблицу и 200 млн в деталь): Код: 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. 92. askmon.sh Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. askmon30.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. Скрипт отрабатывает 20 раз, вот фрагмент его лога: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Этот лог далее затаскивается в эксель, из него удаляются лишние строки с заголовками и пропусками, после чего он упорядочивается по графам {MON_USER, DTS}. Затем добавляется графа diffWrites, в которую пишутся разности значений графы WRITES (это алиас столба MON$IOSTATS.mon$page_writes). Ну, и вот: диву даюсь. Получается так, что поток CACHE_WRITER'а пишет за каждые 10 сек по 60-80 тыс страниц. А основной поток, который инсертит в базу, пишет за то же время по 2...3 тысячи. Чем это объяснить ? (в аттаче - причёсанный эксельный лист; сравните там значения в графе diffWrites для групп строк с mon_user = cache_writer vs sysdba). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 12:47:17 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, а что именно тебе не нравится? Рабочий поток изменил страницу в кеше, пошел делать дальше свою работу, грязные страницы он писать на диск начнет только когда засрет весь кеш. А пока суть да дело, кешрайтер пишет грязные страницы сам, так что в кеше почти всегда остаются свободные буферы и рабочий поток не тормозится на ненужный I/O. Объем работы (с точки зрения CPU) у кешрайтера намного меньше, поэтому он успевает больше. А основной поток пока запись на страницу положит, пока две-три индексных страницы прочитает, пока ключ вставит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 13:00:11 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitrОбъем работы (с точки зрения CPU) у кешрайтера намного меньше, поэтому он успевает больше. А основной поток пока запись на страницу положит, пока две-три индексных страницы прочитает, пока ключ вставит...Если так, то кешрайтер рано или поздно должен будет некоторое время сидеть сложа руки: он пишет в ДВАДЦАТЬ раз больше страниц, чем рабочий поток и должен когда-нить "догнать и перегнать Америку". Значит, я могу сейчас запустить мониторинг на 2-3 часа и увидеть в его отчете длительные периоды с diffWrites = 0 - так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 13:04:48 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
кешрайтер пишет ровно столько, сколько рабочий поток пачкает. Отдыхать он будет когда хотя бы четверть кеша станет доступной для повторного использования. Если он успеет писать быстрее, чем рабочий поток пачкать, то да - периодически кешрайтер будет простаивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 13:22:37 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitrкешрайтер пишет ровно столько, сколько рабочий поток пачкает. Отдыхать он будет когда хотя бы четверть кеша станет доступной для повторного использования. Если он успеет писать быстрее, чем рабочий поток пачкать, то да - периодически кешрайтер будет простаивать.Какой интервал между снимками посоветуешь сделать, чтобы это увидеть ? Мну кажется, что 10 сек - слишком большой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 13:32:49 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидКакой интервал между снимками посоветуешь сделать, чтобы это увидеть ? Мну кажется, что 10 сек - слишком большой.Ты не теми единицами оперируешь :) Он может простаивать, например, по 1-10 мс между циклами записи - микроскоп бери :) Чего узнать-то хочешь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 14:11:52 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladОн может простаивать, например, по 1-10 мс между циклами записи - микроскоп бери :) Чего узнать-то хочешь ?фигасе... про 1...10 мс - не знал. Это сильно меняет дело :-) А узнать хотел, как всегда, одно: что так тормозит добавление записей на странице 8К (да и на 16 К будет, наверное, то же самое). При том, что уже writes barrier = 0 и выставлен noatime. Осталось только data=writeback добавить, но это уже крайняк. Вот и решил в mon$ покопаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 14:26:24 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, можешь этот же тест повторить для классика ? Там нет cache writer'а, сравним статистику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 14:29:09 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladможешь этот же тест повторить для классика ? Там нет cache writer'а, сравним статистику.Сейчас не смогу - заливка еще идёт. А обязательно ли для Classic'a ? Нельзя ли для SC ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 14:33:04 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоидhvladможешь этот же тест повторить для классика ? Там нет cache writer'а, сравним статистику.Сейчас не смогу - заливка еще идёт. А обязательно ли для Classic'a ? Нельзя ли для SC ?Нет, срочно сейчас - всё бросай ! Есс-но, можно и для SC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 14:39:51 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladможно и для SC.Да, но там вопрос об интервале между запросами к монам - очень актуальный, в отличие от супера. Каким его задать ? PS. А сохраню-ка сюда еще и батничек, который генерит .sql-скрипт, выполняющий без переконнектов любое число таких запросов к mon$-таблицам, который показан выше. И с любой паузой между окончанием N-го запроса и началом (N+1)-го. То есть, если ввести вот это: Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Вот этот батник (запускать на винде, копировать затем скрипт askmon.tmp на линух): mkaskmon.bat Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 15:00:57 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоидтам вопрос об интервале между запросами к монам - очень актуальный при одном рабочем коннекте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 15:11:19 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидтам вопрос об интервале между запросами к монам - очень актуальный при одном рабочем коннекте?Про один коннект не могу пока сказать - проверить надо, какой там отклик будет при аналогичных вставках. А вот когда idx_under_load грузил, то там была видна сильная разница (в пользу SS). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 15:18:32 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Сгенерил скриптик на 7200 итераций, с паузой 0.5 сек между окончанием текущей и commit + select следующей. Затем всё также вытряхнул в эксель, оставил там первые 7000 строк (иначе нельзя сюда приаттачить .rar). Далее провёл всё теже манипуляции со значениями в графе WRITES для CW. Может, он и отдыхал в какие-то моменты по 1...10 мс, не знаю. Но эксель показывает, что он всё время со следующим старанием РАБОТАЛ: 1) строк, в которых кол-во writes в диапазоне от 100 до 1000 - около 100; 2) от 1001 до 2000 - около 450; 3) от 2001 до 3000 - около 1000; 4) от 3001 до 3000 - около 1100; . . . 5) свыше 10'000 - около 700 строк. Значительная доля строк показывает, что CW передавал в кеш линуха от 6 до 9 тыс страниц каждые 500 мс. То есть, моменты отдыха этого потока если и были, то какие-то нечастые, ИМХО. Но главный вопрос в следующем. С базой работает только ОДИН аттач (в мониторинге - поток от sysdba). Разность значений writes для него на момент начала и окончания теста = ~1.4 млн. А разность значений writes для Cache Writer'a за эти же моменты времени составляет 40 млн. Я не могу осилить причину этого дифферента %-/ В аттаче - эксель для CW. В следующем посте - для рабочего потока от SYSDBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 19:07:42 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
окончание предыдущего поста - см второй аттач, для рабочего потока от SYSDBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 19:08:32 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
... а еще вопрос: если я начинаю вставку (скрипт см тут) в пустую базу небольшого числа строк (20'000 в tmain, 2'000'000 в tdetl) - то может ли поток CacheWriter'a иметь нулевое изменение статистики в mon$iostats.writes ? (см аттач) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 22:17:34 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоидскрипт см тутимелся в виду стартовый пост, вызов ХП с входным параметром = 20000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 22:19:44 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
отгадку можно найти в моих ответах выше. Пока рабочий поток не испачкает своими вставками 3/4 кеша, то кешрайтер не пошевелится писать что-либо на диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 23:01:41 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitrотгадку можно найти в моих ответах выше. Пока рабочий поток не испачкает своими вставками 3/4 кеша, то кешрайтер не пошевелится писать что-либо на диск.Да, но когда скрипт заканчивает свою работу commit'ом, кто-то же должен записать страницы на диск ? В отчете на момент после окончания скрипта значения writes для CW так и остаются прежними. И "кто" тогда передаёт данные в файловый кеш операционки из страничного кеша ФБ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 00:53:46 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Нескладуха какая-то со статистикой, КМК. 0) рестартовал ФБ, установил в database.conf на пустой базе нищенский кеш = 128 страниц; 1) запустил isql, выяснил ID его аттача; добавил в конфиг трейса фильтр на отлов событий только для этого attach_id; 2) запустил трейс; 3) запустил огромный скрипт, делающий без переконнектов снимки с мониторных таблиц и складывающий их в лог, с интервалом = 0.5 сек (пример его я приводил выше в этом топеге); 4) запустил на выполнение скрипт, добавляющий 20 тыс строк в tmain и 2 млн в tdetl: Код: plaintext 1. Далее смотрю статистику трейса: 99833 write(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. Вытряхнул лог мониторинга в эскель (см аттач), причесал его там. В итоге вижу в экселе, что дельта в графе writes между последними и первыми значениями: 1) для рабочего потока от SYSDBA: 99'907 - 5 = 99'902 - вполне объяснимое значение, близкое к данным трейса; 2) для Cache Writer'a: 4'124'841 - 0 = 4'124'841 страниц. Разница в 41 раз. Опять соотношение в 3..4 десятка раз. Чего он (CW) делал в 40 раз больше, чем поток-молотилка ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 01:44:44 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, тот, кто делает коммит, есс-но. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 01:45:54 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Ты с SC\CS сравнил те же действия ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 01:48:51 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladтот, кто делает коммит, есс-но.Это делает коннект-молотилка. "Кому" он передаёт грязные страницы - непосредственно файловому кешу, получается ? (раз CW сидит без дела) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 01:50:35 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladТы с SC\CS сравнил те же действия ?Нет пока... всё еще с SS "борьба" идёт. Завтра, надеюсь, смогу и к Вильяму нашему Шекспиру SC подступиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 01:51:37 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид"Кому" он передаёт грязные страницы - непосредственно файловому кешу, получается ?Нет, он на деревню деду письма пишет. У тебя какие-то совершенно дикие представления о том, как всё устроено... где ты их только берёшь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 01:55:41 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladТаблоид"Кому" он передаёт грязные страницы - непосредственно файловому кешу, получается ?Нет, он на деревню деду письма пишет. У тебя какие-то совершенно дикие представления о том, как всё устроено... где ты их только берёшь ? В mon$io_stats.page_writes, вестимо. Я не понимаю ситуацию, при которой значение в этом столбе может оставаться постоянным (нулевым) для потока CacheWriter'a, пример тут . И не понимаю также, почему в другом случае CW увеличил этот же счетчик на 4.1 млн, тогда как рабочий поток - только на 100 тыс. Если не затруднит, объясни, плз, как такое может быть. Все скрипты приведены выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 10:19:36 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, а я не понимаю, что можно было не понять в объяснениях выше. Писать страницы (page writes) может (а) рабочий поток при коммите, либо (б) рабочий поток при заполнении кеша, либо (в) кешрайтер при заполнении кеша. Соотношение (б) и (в) зависит от нагрузки, от размера кеша и от объема изменений. На разных тестах будут разные цифры. Но кто именно будет писать - абсолютно неважно, кешрайтер просто по мере возможности помогает рабочему потоку, беря часть I/O на себя. На SC/CS помогать некому, там все пишет рабочий поток (а + б). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 11:24:06 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitrкто именно будет писать - абсолютно неважно, кешрайтер просто по мере возможности помогает рабочему потоку, беря часть I/O на себя. На SC/CS помогать некому, там все пишет рабочий поток (а + б).Спасибо, теперь ясно. Я пребывал в заблуждении: считал, что ВСЕ страницы всегда пишет только поток CW, а рабочий поток пишет только в страничный кеш, не более того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 11:40:50 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitr, объясни, плз, еще одно. В аттаче номе 123 некий стейтмент, запущенный в момент t1 и законченный в момент t2, приводит к 1000 writes в трейсе. А разность значений в mon$io_stats.page_writes для моментов t2 & t1 аттача 123 - совсем другая, не 1000. Такое может быть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 12:31:59 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, совсем другая - это сколько? Отличие небольшое или в разы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 12:59:46 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitrсовсем другая - это сколько? Отличие небольшое или в разы?Отличие в 40 раз. Тынц . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 13:05:51 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоидdimitrсовсем другая - это сколько? Отличие небольшое или в разы?Отличие в 40 раз. Тынц .пардон, это не то совсем: там CW превышает статистику молотилки в 40 раз. Но всё равно интересно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 13:06:58 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladТы с SC\CS сравнил те же действия ?сравнил статистику SS vs SC для следующего сценария: 1) база создается с нуля, FW = ON, page_size=4K, buffers = 128 ; 2) в базе создается генератор `g` и таблица: Код: plaintext 1. 2. 3. 4. 5. 6. В таблицу заливается 305 тыс строк: Код: plaintext 1. Перед началом заливки: 1) в конфиге трейса ставится фильтр connection_id = <current_connection > 2) запускается огромный скрипт, делающий снимки мон-таблиц без переконнекта, с паузами = 1 сек (батник для его создания был приведен выше; скрипт содержит 7200 итераций, что должно хватать на время работы коннекта-молотилки и отследить его статистику). Статистика по времени: SuperClassic оказался немного быстрее SuperServer'a. Результаты см. в аттаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 16:48:43 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
PS-1. По трейсу и mon$iostats в SS наглядно, как общая статистика writes "перекочевала" из insert-стейтмента в cache_writer. Но деяния кешрайтера в трейсе вообще не отражаются PS-2. Общая сумма разностей (по CW и рабочему потоку) в поле page_writes для SS оказывается меньше общего числа вставляемых в таблицу строк примерно на 6 тыс, а в SC аналогичное отличие составляет 10 тыс. Коммит выдает в трейсе около 60-70 writes (см аттач). Куда остальные тысячи подевались ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 16:57:08 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидКуда остальные тысячи подевались ? Тебе приходило в голову, что на одну страницу помещается несколько записей?.. И что SC пишет страницу только когда она полностью заполнена, а у SS cache writer может ту же станицу скинуть пару раз в недозаполненном состоянии?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 17:53:24 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоидсравнил статистику SS vs SC для следующего сценария: 1) база создается с нуля, FW = ON, page_size=4K, buffers = 128 ;SS и буфер в 128 страниц ? Выкинь это всё сразу же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 18:31:50 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТаблоидКуда остальные тысячи подевались ?Тебе приходило в голову, что на одну страницу помещается несколько записей?.. И что SC пишет страницу только когда она полностью заполнена, а у SS cache writer может ту же станицу скинуть пару раз в недозаполненном состоянии?..Причём тут число записей таблицы в одной странице базы ? У мну в 4096 байт должно быть floor(4096 / (16 + (4+36))), т.е. ~ около 70 записей (не помню точно, сколько байт занимает заголовок: не то 13, не то 17; взял 16) - дальше что ? Если одна и та же страница меняется кешрайтером много раз, то результат должен быть обратным: сумма разностей mon$io_stats.page_writes будет больше , чем то, что показывает трейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 20:25:04 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladТаблоидсравнил статистику SS vs SC для следующего сценария: 1) база создается с нуля, FW = ON, page_size=4K, buffers = 128 ;SS и буфер в 128 страниц ? Выкинь это всё сразу же.я намеренно сделал так, чтобы CW пришлось потрудиться. Почему "выкинуть" и какой тогда буфер ставить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 20:26:22 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, что ты тестируешь ? Какая у тебя цель ? Откуда ты взял, что кол-во writes должно совпадать с кол-вом inserts ???? cache writer не меняет страницы, что за бред ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 20:50:54 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоиддальше что ? Дальше пойди проспись, а потом точно сформулируешь: что именно "меньше" и чего именно оно "меньше". В то ты уже начал говорить как Болтик. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 20:53:50 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТаблоиддальше что ?Дальше пойди проспись, а потом точно сформулируешь: что именно "меньше" и чего именно оно "меньше". В то ты уже начал говорить как Болтик.я не пил с НГ и постарался сформулировать всё доходчиво; жаль, что тебе в лом открывать тот аттач с экселем. На, картинку посмотри, может, быстрее допрёт... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:16:03 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, тебя уже выше спросили: на кой ляд ты сравниваешь число вставленных строк с числом записанных страниц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:21:42 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitrтебя уже выше спросили: на кой ляд ты сравниваешь число вставленных строк с числом записанных страниц?Если они не должны быть равны, то... они не могут быть и настолько близкими, как тут (310 vs 315 тыс)! Ибо в 1 страницу базы размером 4096 влезает десятки записей с полями int & varchar(36). Да, там есть еще два индекса, но и там на 1 страницу влезает десятки ключей. Если счетчик writes увеличивается только когда страница заполнится, то ввиду вышесказанного первое число скорее должно быть не 310 тысяч, а 31 тысяча. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:30:45 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, так бы оно и было, если бы ты не выставил кеш в дурацкие 128 страниц и не заставил бы этим кешрайтера писать страницы не дожидаясь их заполнения. О чем DS тебе сказал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:35:26 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladТаблоидсравнил статистику SS vs SC для следующего сценария: 1) база создается с нуля, FW = ON, page_size=4K, buffers = 128 ;SS и буфер в 128 страниц ? Выкинь это всё сразу же.повторил для буфера = 16384 (в SC так и в SS; FW вырубил). Запрос: Код: sql 1. (6.3 млн строк) Трейс для SuperServer'a: Код: plaintext 1. 2. 3. 4. 5. Трейс для SuperClassic'a: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:37:19 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
dimitrтак бы оно и было, если бы ты не выставил кеш в дурацкие 128 страницИ не сделал бы индекс по guid полю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:56:00 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоидповторил для буфера = 16384 (в SC так и в SS; FW вырубил).Всё, счастье настало ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:56:24 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Тьфу, забыл эксель прилепить к предыдущему посту. Смотрим аттач. Там общая статистика по mon$iostats: 1) в SuperServer'e: THREADTOTAL_DIFF_WRITESCACHE_WRITER3 384 221 SYSDBA330 176 TOTAL 3 714 397 2) в SuperClassic'e разность счетчика page_writes = 3 704 960 Итого: при вставке 6.3 млн строк в таблицу и два её индекса счетчик writes дёргался 3.7 млн раз. При том, что в 1 страницу базы влезает чуть ли не 60 строк таблицы (и индексных ключей столько же, таков DDL). Буфер = 16384 страниц, в 8 раз больше дефолтного. Не вижу в упор проявления алгоритма:DSSC пишет страницу только когда она полностью заполнена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 22:06:48 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladчто ты тестируешь ? Какая у тебя цель ? Откуда ты взял, что кол-во writes должно совпадать с кол-вом inserts ????Цель одна: понять, откудова взялись такие тупняки при заполнении таблиц в известном тебе тесте. И особенно - откудова они же (тупняки, только ГИГАНТСКИЕ) при выполнении второго теста: delete => select count(*) ==> insert. Когда ждёшь результаты выполнения скриптов по 18...24 ч, поневоле начнёшь думкать в эту сторону. hvladТаблоидповторил для буфера = 16384 (в SC так и в SS; FW вырубил).Всё, счастье настало ?неа...увы и ах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 22:13:34 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидЦель одна: понять, откудова взялись такие тупняки при заполнении таблиц в известном тебе тестеВ статистике ФБ ты этого не найдёшь. Таблоиднеа...увы и ах.Ну значит так и запишем - безнадёжен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 22:29:41 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladтак и запишем - безнадёжен.ну и ладно, записывай :-) Только я напоследок еще разок стрельну. Повторил тест для SC, заполнение таблицы с единственным полем, ts(id int), БЕЗ индексов, 95 млн строк. Буфер прежний, 16384. Сопоставил gstat -r итоговой базы: data pages = 1'171'352 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Отношение числа записей в таблице к числу страниц в базе: 94879506 / 1171352 = 81. Отношение размера страницы к длине записи с учетом несжимаемого заголовка: 4096 / (16 + 8*4) = ~85. А это значит, что правило: "SC передает страницу в файловый кеш только, когда она заполнена" - соблюдается лишь при отсутствии индексов. Добавление индекса отменяет эту мантру к ЧМ: writes дёргается в 100500 раз чаще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 23:18:52 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидА это значит, что правило: "SC передает страницу в файловый кеш только, когда она заполнена" - соблюдается лишь при отсутствии индексов. Добавление индекса отменяет эту мантру к ЧМ: writes дёргается в 100500 раз чаще.Нет такого правила и быть не может. Ты его сам придумал, сам и опроверг. Хватит уже, кто-то может в эту чушь поверить ведь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 23:23:32 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladНет такого правила и быть не может. Ты его сам придумал, сам и опроверг. Хватит уже, кто-то может в эту чушь поверить ведь...посмотри аттач в здесь .мнупри вставке 6.3 млн строк в таблицу и два её индекса счетчик writes дёргался 3.7 млн раз. ЗЫ. Запустил 95 млн, но табличку эту, ts(x int), снабдил индексом. Пущай полетает, поглядим тогда в логи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 23:38:09 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, offtop, но не могу удержаться. Вместо того, чтобы генерить скрипт на 100500 итераций, воспользуйся пайпами. isql_shell.bat - запускатель для isql, но можно и непосредственно isql использовать Код: sql 1. 2. 3. 4. 5. 6. 7. 8. gen_cmd.bat - выводит все нужные команды в STDOUT Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Run.bat - собственно запускает Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 10:44:31 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladТаблоидА это значит, что правило: "SC передает страницу в файловый кеш только, когда она заполнена" - соблюдается лишь при отсутствии индексов. Добавление индекса отменяет эту мантру к ЧМ: writes дёргается в 100500 раз чаще.Нет такого правила и быть не может. Ты его сам придумал, сам и опроверг. Хватит уже, кто-то может в эту чушь поверить ведь...Нну-с, "продолжаем разговор" (С) :-) Сделал всё заново, на линухе. SuperClassic, buffers = 1024, база с единственной таблицей ts(x int). Вариант-1: добавление 95 млн строк в эту таблицу, когда для неё НЕТ индекса. Вариант-2: то же самое, но предварительно создан неуникальный индекс по полю `x`. Стейтмент добавления один и тот же: Код: plaintext gstat -r (после заполнения таблицы 95 млн строками, вариант БЕЗ индекса): Код: 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. Таким обр., на одной странице базы размещается 163 записи таблицы. За 1 сек до запуска стейтмента в другом окне был запущен запрос к mon$io_stats с регистрацией изменений mon$page_writes. В третьем окне был запущен трейс с регистрацией активности только рабочего коннекта, выполняющего вставки. ИТОГО. Вариант-1 (в аттаче - лист "ins-NON-index-buf-1024"): дельта значений в mon$io_stats.page_writes составила 572225, трейс показал сумму writes = 584422 (583403 по стейтменту и 1019 по коммиту). Это - очень хороший и пушистый результат: действительно видно, что SuperClassic выталкивал страницу в файловый кеш только когда она заполнена примерно 163 записями. Вариант-2 (в аттаче - лист "ins-INDEXED-buf-1024"): дельта значений в mon$io_stats.page_writes составила 62 794 292, трейс показал сумму writes = 62 795 289 (62794271 по стейтменту и 1018 по коммиту). Делим общее число записей в базе и (такое же) число ключей в индексе на 62 795 000: (94879506+94879506) / 62795000 - получаем результат около 3. То есть, на каждые три новых записи в таблице и столько же ключей в индексе - и две передачи в файловый кеш из страничного буфера. В где я ошибаюсь ? ЗЫ. сырые логи трейса и запроса к mon$-таблица, если надо, выложу на файлопомойку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 14:59:42 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидВ где я ошибаюсь ?Что ты хочешь доказать ? ps особенно умиляет сизифов труд по сопоставлению дельт в мониторинге это же МАРАЗМ в данном случае ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 15:18:32 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladТаблоидВ где я ошибаюсь ?Что ты хочешь доказать ?я ничего не доказываю, просто результаты привожу. И хотел бы увидеть объяснение им. hvladps особенно умиляет сизифов труд по сопоставлению дельт в мониторинге это же МАРАЗМ в данном случаеОбоснуй, плз. Не понимаю, почему разглядывание дельт в mon$iostats стало маразмом в ДАННОМ варианте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 15:32:14 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоидя ничего не доказываю, просто результаты привожу.Это такое новое развлечение: ой, я выполнил запрос - смотрите все ! Ой, ещё один, смотрите же скорее ! ? ТаблоидИ хотел бы увидеть объяснение им.Тебе всё уже объяснили. Новых вопросов ты не задаёшь. Объяснения не понимаешь. Тебе не кажется, что кто-то ходит по кругу ? Таблоидhvladps особенно умиляет сизифов труд по сопоставлению дельт в мониторинге это же МАРАЗМ в данном случаеОбоснуй, плз. Не понимаю, почему разглядывание дельт в mon$iostats стало маразмом в ДАННОМ варианте.Потому что для одного запроса они не могут отличаться от итогового результата что в трейсе, что в isql. Ты везде ссылаешься на сумму этих дельт - так на кой они тебе (нет - нам тут!) вообще нужны ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 15:39:39 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladЭто такое новое развлечение: ой, я выполнил запрос - смотрите все ! Ой, ещё один, смотрите же скорее !Да, ты угадал. Разумеется, это развлечение. Скорее смейтесь все, дабы я провалился от стыда и больше так не никогда делал. А смотреть в приаттаченные результаты - даже не вздумайте, там бред один. Ога. hvladдля одного запроса они не могут отличаться от итогового результата что в трейсе, что в isql. Ты везде ссылаешься на сумму этих дельт - так на кой они тебе (нет - нам тут!) вообще нужны ?Ты не читаешь то, что я спрашиваю. Я не сравниваю сумму дельт в mon$io_stats с трейсом! Они там вместе приведены просто для верности: проверяю сам себя, дабы избежать ошибки копипаста "не с того места". Меня интересует различие в отношении числа добавляемых записей к числу writes , когда вставки идут 1) без индексов, а затем 2) с индексом. Интерес вызван не праздным любопытством, а потерей большого кол-ва времени на ожидание результатов известных тебе скриптов. Для варианта вставки в не- индексированную таблицу это отношение (163) выглядит действительно так, как говорилось выше: SC передаёт страницу базы в файловый кеш только когда она будет почти вся заполнена. Для варианта вставки в таблицу + индекс отношение становится совершенно другим (около 3). ТЫ МОЖЕШЬ ОБЪЯСНИТЬ ЭТО РАЗЛИЧИЕ ? БОЛЬШЕ МНЕ НИЧЕГО НЕ НУЖНО В ЭТОМ ТОПИКЕ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 16:08:59 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидТы не читаешь то, что я спрашиваюА что ты спрашиваешь ? Что ?! Где вопрос ? Ты так заспамил свои же сообщения, что найти в них зерно - нереально. Например, какое отношение имеют твои последние N писем к твоей же теме топика ? ТаблоидМеня интересует различие в отношении числа добавляемых записей к числу writes Нет никакой прямой связи между этими двумя числами. Нет. НЕТ. НЕТ Так понятно ? У тебя страницы индекса пишутся и читаются многократно и это зависит от распределения ключей и очерёдности их появления в новых записях. И тебе на это неоднократно намекалось выше. Но ты вбил себе в голову только страницы данных и не видишь ничего вокруг... ТаблоидИнтерес вызван не праздным любопытством, а потерей большого кол-ва времени на ожидание результатов известных тебе скриптов.Я тебе уже сказал 100500 раз - ты не найдёшь эту причину в статистике ФБ. Ты читаешь то, что тебе пишут ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 17:22:01 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladстраницы индекса пишутся и читаются многократно и это зависит от распределения ключей и очерёдности их появления в новых записях. И тебе на это неоднократно намекалось выше. Но ты вбил себе в голову только страницы данных и не видишь ничего вокруг...Я как раз вижу , что при записи именно индексных страниц показатель writes меняется, причём радикально. Надо добавить 95 млн записей и столько же ключей (пусть это будет в ДЕСЯТЬ раза больше инфы, чем без индекса), а writes увеличивается в 62795289 / 584422 - больше чем в 100 раз! Если ключ индекса состоит из одного int-поля и в таблицу добавляется три записи, то сколько новых индексных страниц должны добавиться ? Или (что скорее всего) сколько раз он должен обновить *одну и ту же* индексную страницу ? hvladты не найдёшь эту причину в статистике ФБ.Ты читаешь то, что тебе пишут ???Да, именно поэтому хочу выяснить это У ТЕБЯ, а не разглядывая статистику. Больше на Земном шаре всё равно никто не ответит. На каком языке еще надо объяснять мой вопрос, чтобы он был наконец-то понят ?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 18:05:23 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид, hvladстраницы индекса пишутся и читаются многократно и это зависит от распределения ключей и очерёдности их появления в новых записях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 18:09:41 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид Или (что скорее всего) сколько раз он должен обновить *одну и ту же* индексную страницу ? при вставке в data pages перечитывать особо ничего не надо, а вот при обновлении индексов - надо. То есть, листовые страницы выпадают из кэша и их надо перечитывать, а еще и есть такое понятие как "расщепление страниц" b-tree при вставке ключей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 18:19:30 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоидсколько новых индексных страниц должны добавитьсяgstat -r ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 18:26:51 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
kdvлистовые страницы выпадают из кэша и их надо перечитывать, а еще и есть такое понятие как "расщепление страниц" b-tree при вставке ключей.hvladТаблоидсколько новых индексных страниц должны добавитьсяgstat -rВ общем, имею вот что сказать. 0) База создана со страницей = 8192, подключение имеет кеш = 16384 страницы. ФБ работает в режиме SuperClassic. FW = OFF. 1) в таблицу ts(x int) с единственным индексом по этому полю было предварительно добавлено ~95 млн записей; 2) в базе создана вьюха для просмотра снимка mon$-статистики: Код: 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. 4) снята статистика базы ПЕРЕД вставкой 100 строк: index ts_x: leaf buckets: 105200, nodes: 94879926 Код: 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. Далее: session #1. Код: plaintext session #2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. session #1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. session #2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 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. leaf buckets: 105200, nodes: 94880026 Код: 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. Число страниц с данными не изменилось (582088). Сколько ФБ добавил новых ИНДЕКСНЫХ страниц, я по gstat -r не вижу. Пролейте свет кто-нить, как это можно определить. По трейсу и дельтам в mon$io_stats.page_writes получается, что: 1) либо ФБ изменил около 100 разных страниц на вставку 100 int-чисел. Но как такое может быть вообще ? 2) либо менялось меньшее число страниц с одними и теми же номерами, но они бесконца вытеснялись , оттого и writes ~100. Но это тоже выгляит нереальным, т.к. страничный кеш = 16384 - он покрывает все эти разности (fetshes2-fetches1 + writes2-writes2 + reads2-reads1) - как бык овцу, тут и считать ничего не надо. Если есть третий вариант, то это вопрос уже к корректности статистики. Такие вот делы. Дальше можете обзывать меня как хотите, посылдать проспаться, пинать ногами и прочая. Только объясните вышеприведенное, пож-ста. PS. Блин я этот тест никогда не забуду, чтоб его об тумбочку!.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 21:21:55 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Таблоид1) либо ФБ изменил около 100 разных страниц на вставку 100 int-чисел.Дошло ! Наконец-то ! Пойду - напьюсь ТаблоидНо как такое может быть вообще ?Не, рано радуюсь :'( Разных ключей у тебя сколько ? Ответ - 65535 Листовых страниц в индексе сколько ? leaf buckets: 105200 Каждый ключ занимает сколько ? Более полутора страниц. Т.е. на каждой странице может быть 1 или 2 разных ключа. Какие ключи ты вставляешь ? Ответ - разные ! РАЗНЫЕ ! Куда ты их вставляешь ? В конец таблицы, т.е. recno будут максимальные. Так в какое место в цепочке дубликатов попадут новые ключи ? В конец каждой цепочки. Так сколько листовых страниц мы запачкаем сотней разных ключей ? А ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 23:59:36 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
hvladРазных ключей у тебя сколько ? Ответ - 65535 Листовых страниц в индексе сколько ? leaf buckets: 105200 Каждый ключ занимает сколько ? Более полутора страниц. Т.е. на каждой странице может быть 1 или 2 разных ключа.Ну-ка стой! Как это полторы страницы (12 КБ!) на 1 фигов ключик, который содержит в себе int-число, плюс номер записи туда прилепить, ну пусть еще и с "заголовком" каким-нибудь (или как там его звать) ?.. ЕЯПП, ты поделил 105200 на число уникальных ключей. А почему не на ОБЩЕЕ число ключей, которое 95 млн ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 00:16:25 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидhvladРазных ключей у тебя сколько ? Ответ - 65535 Листовых страниц в индексе сколько ? leaf buckets: 105200 Каждый ключ занимает сколько ? Более полутора страниц. Т.е. на каждой странице может быть 1 или 2 разных ключа.Ну-ка стой! Как это полторы страницы (12 КБ!) на 1 фигов ключик, который содержит в себе int-число, плюс номер записи туда прилепить, ну пусть еще и с "заголовком" каким-нибудь (или как там его звать) ?.. ЕЯПП, ты поделил 105200 на число уникальных ключей. А почему не на ОБЩЕЕ число ключей, которое 95 млн ?Пардон, забыл я про рисунок Анны в эпизодах, где индексы. С этим вариантом, когда дубликатов полно, вроде бы прояснилось. Остался вариант с уникальным индексом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 00:29:26 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидОстался вариант с уникальным индексом.Всё ясно. Дубликаты ключей - Мировое зло. Та же база+таблица, 95 млн строк, только залиты они были так: insert into ... select gen_id(g,1) from ... В итоге: isql Код: 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. trace Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 01:01:15 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
ТаблоидВсё ясно. Дубликаты ключей - Мировое зло.В твоём предыдущем тесте мировым злом был индекс на поле с guid - тут тоже дубликаты виноваты ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 01:42:41 |
|
||
|
Вставка в индексир.таблицы: cache writer в 1 ед времени пишет в 20 раз > раб. потока
|
|||
|---|---|---|---|
|
#18+
Ты про тест, который tmain=2 млн и tdetl=200 млн строк ? там просто были неверно выбраны "гарабиты": надо было поменьше раз в 10 на каждую таблицу, и всё прошло бы без шума и пыли, за 3-4 часа :-) PS. насчет мирового зла - поправка: плохи не дубли, а большое кол-во цепочек, если они заканчиваются на разных страницах базы. Тогда действительно получается, что вставка 100 значений приводит к пачканию 300 страниц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 08:46:26 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1563962]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
189ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
100ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 569ms |

| 0 / 0 |
