|
|
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Bely, я вас за язык не тянул. вам очевидные вещи нужно продемонстрировать? Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Завершение второго запроса пока ожидаю.... Ещё нужны доводы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 14:11 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Те же яйца только с индексом... и свой запрос исправил (не оттуда его скопировал). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: 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. 20:5 и 31:1 - неплохой результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 14:55 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
boottyВопрос в структуре для хранения истории событий . Разрешение/запрещение доступа, изменение цены товара, изменение какого-либо признака сущности с какого-то момента. А здесь почему-то все прицепились к одному конкретному примеру... Не побоюсь сказать банальность, но ответ содержится в вопросе. Что касается необходимости отражать в структуре БД состояния - для обсуждения этого аспекта вы слишком узко (или наоборот, неконкретно? :) ) ставите вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 16:08 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
йййййййййЗа еду нельзя работать, даже в кризис. Когда как, товарищ. Рады за то, что вы можете делать такие заявления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 16:11 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
DogenЧто касается необходимости отражать в структуре БД состояния - для обсуждения этого аспекта вы слишком узко (или наоборот, неконкретно? :) ) ставите вопросы.Согласен, виноват. Но ниже уже было другое:boottyИнтересуют и события, и состояния. Предполагаю, чаще будет требоваться знать состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 10:18 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
expla, Более реальные тестовые данные. Но до тех пор, пока FULL TABLE SCAN будет выгоднее досьупа по индексу, тестировать бесполезно. Код: 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. теперь, собственно запросы. Код: 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. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 13:02 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Belyexpla, Более реальные тестовые данные. Но до тех пор, пока FULL TABLE SCAN будет выгоднее досьупа по индексу, тестировать бесполезно. Сделай стенд, чтобы полезно было. А то выходит, что ты гол в свои ворота забил. Индекс тут не используется не только и не столько из-за того что "выгоднее", а по фундаментальной причине. Что время то не замерил? Пока я вижу Cost 2605:788 - многообещающее начало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 13:35 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
explaСделай стенд, чтобы полезно было. А то выходит, что ты гол в свои ворота забил. Не у всех есть куча времени, чтобы его тратить на исследования. У меня его пока нет. explaИндекс тут не используется не только и не столько из-за того что "выгоднее", а по фундаментальной причине.Это что за "фундаментальная причина" по которой в такой таблице не используется индекс? explaЧто время то не замерил? Пока я вижу Cost 2605:788 - многообещающее начало. А что, consistent gets и physical reads - не подходят? Время может от чего угодно зависеть, в том числе от текущей нагрузки на сервер, чертыханий на клиента, закупоренности сетки итд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 14:28 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Bely, 1) понимаю... ведь тебе кучу кода писать приходится. 2) например так Код: plaintext 1. 2. 3) кого бодает consistent gets, physical reads кроме разработчика и DBA? physical reads не сложно свести к 0. что бы нивелировать влияние случайных факторов, к результату эксперимента применяют методы статистической обработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 14:56 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
expla1) понимаю... ведь тебе кучу кода писать приходится. [quot expla]кого бодает consistent gets, physical reads кроме разработчика и DBA?Мэээ... ну так мы на SQL.ru вроде а не на BLONDINKA.ru вобщем - вот тестовые данные. Добавлена строка сообщения, чтобы таблица не состояла из одних полей по которым идет поиск. Кроме этого - переделан индекс по таблице с одной датой. Код: 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. Далее запросы - поиск в диапазоне. Код: 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. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. И еще - другая дата (для таблицы с одной датой) Код: 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. Заставить запрос ходить по индексу с двумя датами - мне так и не удалось. Позже выложу еще запросы с поиском доступа н указанную дату, а не на диапазон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 16:35 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Bely, Код: 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. если переделать индекс Код: plaintext 1. 2. 3. 4. 5. 6. То получаем Код: 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. И, ИМХО, из-за замены union на union all в запрос таки ошибочка закралась, в случае i.frd = sysdate-500000 запись задвоится. 3442:2114.... Я доволен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 17:42 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Предлагаю таблицу: ИмяТаблицы, ИмяПоля, ДатаИзменения, Значение поля, Комментарии А уж дальше извлекать данные по конкретному полю конкретной таблицы процедурами или функциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 16:58 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
RodionATПредлагаю таблицу: ИмяТаблицы, ИмяПоля, ДатаИзменения, Значение поля, Комментарии А уж дальше извлекать данные по конкретному полю конкретной таблицы процедурами или функциями. НЕ НАДО! В 1С 7.7 так и было, ничего хорошего. Потом в 8 версии от этого ушли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 17:02 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
RodionATПредлагаю таблицу: ИмяТаблицы, ИмяПоля, ДатаИзменения, Значение поля, Комментарии А уж дальше извлекать данные по конкретному полю конкретной таблицы процедурами или функциями.предлагаю запихнуть в такую таблицу миллионов 70 строк и посмотреть как быстро состарится полтьзователь от ожидания данных от отчетов, которые используют такую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 17:02 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
RodionATПредлагаю таблицу: боян первыйнах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 17:02 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Господа, не ломайте голову над велосипедом! Период актуальности (время жизни и т.п. - называйте как хотите) - либо вектор, либо отрезок . Два поля типа дата/время с возможностью нести Null-значения и все проблемы проектирования БД решены. Остальные мелочи - задача программного кода. P.S.: На сегодня, конечно, есть теория гиперрациональных чисел, где время - это пространство... Но оно вам надо??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2009, 19:55 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
TsRVГоспода, не ломайте голову над велосипедом! Период актуальности (время жизни и т.п. - называйте как хотите) - либо вектор, либо отрезок . Два поля типа дата/время с возможностью нести Null-значения и все проблемы проектирования БД решены. Остальные мелочи - задача программного кода. P.S.: На сегодня, конечно, есть теория гиперрациональных чисел, где время - это пространство... Но оно вам надо??? Это про Вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2009, 21:36 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Bely Это про Вас? Bely, вы всегда усложняете себе жизнь из-за пары миллисекунд? Формула-1? А Вы не задумывались, что когда-то преемнику Вашего "достояния" придется его разгребать??? Хорошо, если Вы пишете частные задачи и в них 3-4 таблицы!.. По существу поставленного вопроса: Первый вариант - как кадры на фото- или кинопленке. Для частных случаев вполне уместен. Считаю второй вариант универсальным, расширяемым, более полно описывающим историзм и понятным . А быстродействие запроса - это еще спорный вопрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 02:17 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
TsRVBely Это про Вас? Bely, вы всегда усложняете себе жизнь из-за пары миллисекунд? Формула-1? А Вы не задумывались, что когда-то преемнику Вашего "достояния" придется его разгребать??? Хорошо, если Вы пишете частные задачи и в них 3-4 таблицы!.. По существу поставленного вопроса: Первый вариант - как кадры на фото- или кинопленке. Для частных случаев вполне уместен. Считаю второй вариант универсальным, расширяемым, более полно описывающим историзм и понятным . А быстродействие запроса - это еще спорный вопрос... Извиняюсь, варианты перепутал с пылу-жару... Фотопленка - второй вариант. Первый предпочтительней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 02:24 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
TsRVBely, вы всегда усложняете себе жизнь из-за пары миллисекунд? Формула-1? А Вы не задумывались, что когда-то преемнику Вашего "достояния" придется его разгребать??? Хорошо, если Вы пишете частные задачи и в них 3-4 таблицы!.. По существу поставленного вопроса: Первый вариант - как кадры на фото- или кинопленке. Для частных случаев вполне уместен. Считаю второй вариант универсальным, расширяемым, более полно описывающим историзм и понятным . А быстродействие запроса - это еще спорный вопрос...Судя по вашему ответу - вы с проблемой производительности при поиске по логу не сталкивались. А у нас лог вот уже к полусотне миллионов строк подбирается. И я не могу сказать пользователю, что отчет готовится медленно, но зато верно. Приходится предпринимать меры, чтобы отчет готовился в ПРИЕМЛЕМОЕ время. Да и размер табличек и индексов на таких объемах начинает становиться не таким безразличным. PS: что касается кино и фото - если бы кино было бы настолько круто, то оно бы выдавило уже фото. Но у фотографий есть такие варианты использования, которые никогда нельзя будет выжать из кино. Подумайте о больших выдержках затвора... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 11:01 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
BelyА у нас лог вот уже к полусотне миллионов строк подбирается. Не проще лог раскидать по периодам или вообще элементарно - в архив? Уверен, для оперативной работы необходимы лишь несколько сотен, может тысяч, последних записей... BelyПодумайте о больших выдержках затвора... Углубляться в мелочи можно до бесконечности. Об этом написано много специализированной литературы. В таком понимании мира - можно и бит разбить на составные части... P.S.: Вы явно работаете не с тиражным ПО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 11:20 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
TsRVBelyА у нас лог вот уже к полусотне миллионов строк подбирается.Не проще лог раскидать по периодам или вообще элементарно - в архив? Уверен, для оперативной работы необходимы лишь несколько сотен, может тысяч, последних записей...Ну, сносить в архив дело хорошее, но вот только прозрачность теряется. И приходится генерить запросы вида Код: plaintext 1. 2. 3. 4. 5. 6. PS: судя по тому, что вы не сказали слово партиционирование, то оно вам не знакомо :) TsRVBelyПодумайте о больших выдержках затвора...Углубляться в мелочи можно до бесконечности. Об этом написано много специализированной литературы. В таком понимании мира - можно и бит разбить на составные части... Чтобы понимать особенности - надо знать частности. Все знают арифметику, но не все могут работать финансовыми директорами и бухгалтерами. Почитайте еще вот это TsRVP.S.: Вы явно работаете не с тиражным ПО...Я видел достаточно много тиражных систем, которые используют те же самые механизмы, что и наша нетиражная. Так что это ровным счетом ничего не значит, кроме того, что у меня больше маневра - мы можем переделать нашу систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 12:28 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
BelyНу, сносить в архив дело хорошее, но вот только прозрачность теряется. И приходится генерить запросы... Bely, вы противоречите сами себе. А Ваши примеры реализации, описанные выше, не теряют прозрачности и не требуют генерации запросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 13:51 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
TsRVBelyНу, сносить в архив дело хорошее, но вот только прозрачность теряется. И приходится генерить запросы...Bely, вы противоречите сами себе. А Ваши примеры реализации, описанные выше, не теряют прозрачности и не требуют генерации запросов?Вы правильно поняли. НЕ теряют прозрачности и НЕ требуют запросов с UNION -ами по нескольким таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 14:15 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Bely SQL> select * from expla2_tmp m 2 where op = 'B' 3 and (oid, frd) in ( select i.oid, max(i.frd) from expla2_tmp i 4 where i.frd <= sysdate-900000 group by i.oid) 5 union all 6 select * from expla2_tmp m1 7 where m1.op = 'B' and m1.frd between sysdate-900000 and sysdate-900000+60 8 ; Если это Вы считаете "прозрачным", то что для вас " НЕ прозрачное"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 14:24 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35768349&tid=1543479]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 475ms |

| 0 / 0 |
