|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Всем доброго времени суток! Может мой вопрос и несколько глупый но все же... Имеется таблица с тремя столбцами: число, дата, текст. Пусть в ней 10 записей. Вопрос мой в том, резервируется ли место (физически на диске в файле БД) в записи под то поле, которое является пустым. Иными словами, будет ли эта таблица занимать одинаковое место на диске, если во всех десяти записях одно из полей будет NULL, а в другом случае заполнено. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2005, 11:38 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Значения NULL не хранятся и не индексируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2005, 11:41 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
То есть таблица с NULLами в одном из полей будет физически весить меньше чем та же таблица с заполненным полем во всех записях? Я правильно понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2005, 11:44 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Vadim_MaximovЗначения NULL не хранятся и не индексируются.В общем случае неверно ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2005, 11:44 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
m1rag3Всем доброго времени суток! Может мой вопрос и несколько глупый но все же... Имеется таблица с тремя столбцами: число, дата, текст. Пусть в ней 10 записей. Вопрос мой в том, резервируется ли место (физически на диске в файле БД) в записи под то поле, которое является пустым. Иными словами, будет ли эта таблица занимать одинаковое место на диске, если во всех десяти записях одно из полей будет NULL, а в другом случае заполнено. Указанная таблица из 10ти строк :o) скорее всего будет занимать одинаковое дисковое пространство, поскольку пространство выделяется блоками фиксированной длинны (точнее экстентами блоков). В пределах блока записи имеют разный размер, в зависимости от фактических значений полей, поэтому в блок может поместиться разное число записей. Касательно NULL. Если пустое поле последнее в списке колонок таблицы, или все следующие за пустым полем поля тоже пустые, то эти поля места вообще не занимают. Например в записи (V1, NULL, V2, NULL, NULL, NULL) последние три пустых поля места не занимают. Если за пустыми полями есть непустое, то каждое пустое поле занимает 1 байт. Например в записи (V1, NULL, NULL, NULL, V2, NULL) первые три NULL занимают по одному байту. Последний NULL места не занимает. Такой подход позволяет добавлять в таблицу пустые колонки практически мгновенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2005, 12:01 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2005, 12:06 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Vadim_MaximovЗначения NULL не хранятся и не индексируются. например bitmap... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2005, 13:40 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Vadim_MaximovЗначения NULL не хранятся и не индексируются.В общем случае неверно ;-)Знаю. Согласен. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2005, 02:13 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Подниму тему, имеется таблица от разработчика порядка 600 столбцов, 500 гиг. Данные разные из разных отчетов, документов и т.д. Соответственно запрос с разбиением по типам данных выглядит так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Красное - нед данных, то есть 90% таблицы откровенно пустые, причем есть отчеты за текущий месяц в 90 миллионов строк, у которых последний столбец находится на 430 месте, а всего занятых столбцов 41. До 430 идут порядка 390 пустых столбцов. В связи с этим возникает ряд вопросов. Если в последнем столбце есть хоть одна заполненная ячейка данных все все столбцы до этого считаются заполненными? Или если заполнена ячейка в строке только эта строка доходит до этой ячейки, а все остальные строки записываются каждая до своей последней заполненной ячейки? В физическом смысле при движении заполненных столбцов ближе к первому (в тех скриптах, что предлагает редактор) вижу таблица пересоздается в табличном пространстве по умолчанию, то есть места мне для еще одной таблицы даже временно просто не хватит. Что будет в это время с UNDO, если таблица порядка 500Гб? Можно ли как-то просчитать не среднюю длину строк, а конкретные длины для каждой строки каждого класса и количество таких строк (это в случае, что все длины строк разные)? ПС. Еще есть вероятность, что в этом отчете на 90 миллионов прочистят пустые строки, но остальное то останется. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 07:48 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
nata44845Если в последнем столбце есть хоть одна заполненная ячейка данных все все столбцы до этого считаются заполненными? Или если заполнена ячейка в строке только эта строка доходит до этой ячейки, а все остальные строки записываются каждая до своей последней заполненной ячейки?RTFM Nulls (FAQ) nata44845Можно ли как-то просчитать не среднюю длину строк, а конкретные длины для каждой строки каждого класса и количество таких строк (это в случае, что все длины строк разные)? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:23 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
nata44845Если в последнем столбце есть хоть одна заполненная ячейка данных все все столбцы до этого считаются заполненными? Или если заполнена ячейка в строке только эта строка доходит до этой ячейки, а все остальные строки записываются каждая до своей последней заполненной ячейки?С таким количеством столбцов уже вступает в дело intra-block chaining Каждая строка разбивается на куски не более 255 столбцов Там теоретически все также -- если заполнен последним (не NULL) столбец 40 -- все остальное не хранится, все столбцы до 40 содержащие NULL занимают 1 байт Если заполнены столбец 40, 300 и 380, то тут первый кусок аналогично предыдущему, а вот остальные -- в зависимости от порядка заполнения -- если первым заполнен столбец 380, то создастся кусок, содержащий (380-256) NULL по одному байту и значение столбца 380. Если потом обновляем столбец 300 -- он будет обновлен в этом куске. А если первым обновлен столбец 300 -- будет создан второй кусок с (300-256) NULL и значением столбца 300. При обновлении столбца 380 будет создан новый кусок с (380-301) NULL по одному байту и значением столбца 380. Обсуждалось уже давно, начиная с Chained rows в вторичных таблицах пространственных индексов и далее Возможно, там и/или тут неточности nata44845В физическом смысле при движении заполненных столбцов ближе к первому (в тех скриптах, что предлагает редактор) вижу таблица пересоздается в табличном пространстве по умолчанию, то есть места мне для еще одной таблицы даже временно просто не хватит. Что будет в это время с UNDO, если таблица порядка 500Гб? Можно ли как-то просчитать не среднюю длину строк, а конкретные длины для каждой строки каждого класса и количество таких строк (это в случае, что все длины строк разные)? ПС. Еще есть вероятность, что в этом отчете на 90 миллионов прочистят пустые строки, но остальное то останется.Тут я не совсем понял терминологию, но да -- реорганизация такой большой таблицы дело весьма ресурсоемкой. Но я бы все-таки разбил на 3 таблицы с 1:1 связью и сверху бы повесил VIEW (INSTEAD OF триггер на обновления) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:26 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, По столбцам все равно не поняла. К примеру есть столбец, в нем половина null половина заполнена. Он занимает полный размер по всем строкам, или в тех строках где есть данные длина равна длине столбца, а там где null 1 байт? И соответственно как ведут себя в этом случае все предыдущие столбцы? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:31 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровЕсли заполнены столбец 40, 300 и 380, то тут первый кусок аналогично предыдущему, а вот остальные -- в зависимости от порядка заполнения -- если первым заполнен столбец 380, то создастся кусок, содержащий (380-256) NULL по одному байту и значение столбца 380. Если потом обновляем столбец 300 -- он будет обновлен в этом куске. А если первым обновлен столбец 300 -- будет создан второй кусок с (300-256) NULL и значением столбца 300. При обновлении столбца 380 будет создан новый кусок с (380-301) NULL по одному байту и значением столбца 380.Вот тут, кстати, скорее всего неточность -- просто в заголовке [под]строки указывается номер первого столбца Хотя, вроде как Chained rows в вторичных таблицах пространственных индексов намекает на это. Насколько помню, так это ничем и не кончилось -- серьезных тестов с дампами и т.д. никто так и не проводил (да никому и не надо), ну или не опубликовал ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:32 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
nata44845Вячеслав Любомудров, По столбцам все равно не поняла. К примеру есть столбец, в нем половина null половина заполнена. Он занимает полный размер по всем строкам, или в тех строках где есть данные длина равна длине столбца, а там где null 1 байт? И соответственно как ведут себя в этом случае все предыдущие столбцы?Ну у нас же не поколоночное хранение Каждая строка ничего не знает об остальных ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:33 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, Ндаа, с вьюшкой у нас проблема как и у них, "самонастраиваемое приложение". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:33 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Elic, Это я тоже условно поняла, что надо отбросить последние нули, но как это сделать запросом пока не продумала. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:36 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, Тут как вариант только вынести часть данных те же отчеты в отдельную таблицу. И попросить больше так не делать... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:37 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
nata44845Это я тоже условно поняла, что надо отбросить последние нули, но как это сделать запросом пока не продумала.Я ж почти готовое выражение дал как способ его генерации. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2017, 08:43 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, Row pieces разбиваются с последнего поля,а не с первого. Т.е. если 355 столбцов то будут два: 100-355 и 1-99 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 14:56 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
xtenderRow pieces разбиваются с последнего поля,а не с первого. Т.е. если 355 столбцов то будут два: 100-355 и 1-99Хммм. Звучит так, что если добавить ещё один столбец, то либо появится третий кусок, либо произойдёт нехилый бессмысленный update. Верится не то что с трудом, а вообще никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 15:18 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Саян, я сам это не проверял, просто дал ссылки, где это обсуждалось Но там были интересные моменты, но вот комментировать их я не берусь В любом случае, проблемы девушки -- другого способа я не вижу ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 15:40 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
ElicХммм. Звучит так, что если добавить ещё один столбец, то либо появится третий кусок, либо произойдёт нехилый бессмысленный update. Верится не то что с трудом, а вообще никак. Или (как вариант) физически ещё один столбец будет добавлен к 1-99 (который станет 1-99,356). SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 17:56 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
ElicxtenderRow pieces разбиваются с последнего поля,а не с первого. Т.е. если 355 столбцов то будут два: 100-355 и 1-99Хммм. Звучит так, что если добавить ещё один столбец, то либо появится третий кусок, либо произойдёт нехилый бессмысленный update. Верится не то что с трудом, а вообще никак.да, появится третий кусок, только уже "уехавший" в другой блок test1 Код: plsql 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.
дамп к тесту1 Код: plsql 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. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:14 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
тест2 Код: plsql 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.
дамп к тесту2 Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:16 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
xtender, так SY ответил же, и думается это логично. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:16 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
продолжение из другого блока к тесту2 Код: plsql 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. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:19 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
K790, смотри дампы: три куска по 1 row piece - 45 2 row piece - 55 3 row piece - 255 из которых только 200 не нуллы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:23 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
SYИли (как вариант) физически ещё один столбец будет добавлен к 1-99 (который станет 1-99,356).Было бы черезчур замысловато. Elicесли добавить ещё один столбец, то либо появится третий кусок, либо произойдёт нехилый бессмысленный update.Судя по DSI402e это получается именно сдвиг столбцов как и при drop column со всеми вытекающими. Block Space Management Row Data In earlier Oracle releases, there was a limit of 255 columns per table. This was because the column count value in a block was limited to one byte of storage. From Oracle8, the number of columns allowed in a table is increased to 1,000. To satisfy this requirement with minimal block changes, this support for the increase in number of columns is implemented through chaining of row pieces within the same block. If the actual storage requirement for the column count were increased, then all existing rows would have to be updated during migration. Intra-Block Chaining As mentioned, the maximum number of columns that a row piece can have is 255. The essential point is that the last row piece is filled up first and the remaining columns form the first piece. In other words, if you assume the complete row has a not null value for the column in position 257, there will be two row pieces: the first one with the values for columns one and two, and a second row piece with the values for the remaining 255 columns. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:33 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Т.е если добавляется не null, то отщепляются последние 255 в другой row piece ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:36 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Elic, авторБыло бы черезчур замысловато. почему бы и нет? только бы ресурсы не жрали :) авторсдвиг столбцов как и при drop column много раз используете? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:39 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
xtenderда, появится третий кусок, только уже "уехавший" в другой блокK790так SY ответил же, и думается это логично.Ребята прежде всего, я имел в виду (и не понимаю, как можно узреть иное) alter table ... add c356 int; Т.е. на "обычных" таблицах обновление только словаря. Саян, в твоих дампах я не понял, кто такой "третий row piece" и куда он "уехал". Sony Ericsson, не уверен, что ты понял нить дискуссии. K790почему бы и нет? только бы ресурсы не жрали :)Ещё раз: докажи, что в теме. K790авторсдвиг столбцов как и при drop columnмного раз используете?Недоразоработчики убедили мегакорпорации, чтобы те нагнули оракл на реализацию этой бесполезности. В таком ключе начинает проясняться "логика" реализации: Захотели? - Так получите гранату. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 22:05 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Elicя имел в виду (и не понимаю, как можно узреть иное) alter table ... add c356 int; Т.е. на "обычных" таблицах обновление только словаря.не очень понял вопроса... ну если само поле заполнять не будешь, то ничего с этими блоками и не будет... ElicСаян, в твоих дампах я не понял, кто такой "третий row piece" и куда он "уехал". ну можно проще показать: тест3 Код: plsql 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.
Что в тесте происходит: 1. создается таблица с 355 столбцами и вставляется одна строка с заполненными первыми 255 полями 2. в цикле 256-355 заполняется очередное поле 3. в итоге видим что куча блоков и по ним размазано 355-255 + 1 row pieces: grep -P "^(block_row_dump|col )" tests/255/baikal_ora_10700_test3.trc > tests/255/test3.dump.txt Код: plsql 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. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 22:25 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
поправка, греп был такой: Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 22:26 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Elic, нисколько ни умаляю твоей полезности на данном форуме. успокойся. авторНедоразоработчики убедили мегакорпорации, чтобы те нагнули оракл на реализацию этой бесполезности. так получается, увольте, приходится. даже 8i томом решениями на 12-ке пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 22:30 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
+ и ноги не остсюда растут а просто был вопрос: 20202919 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 22:37 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
xtenderElicя имел в виду (и не понимаю, как можно узреть иное) alter table ... add c356 int; Т.е. на "обычных" таблицах обновление только словаря.не очень понял вопроса... ну если само поле заполнять не будешь, то ничего с этими блоками и не будет...Т.е. добавление пустого столбца в уже широкую таблицу - это по-прежнему только обновление словаря? xtenderт.е. row chaining уже становится не intra-block...Как я понимаю, intra - это всего-лишь потому, что возможно chain-ить внутри одного и того же блока, в отличие от природы других chaining-ов. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 22:59 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
K790авторНедоразоработчики убедили мегакорпорации, чтобы те нагнули оракл на реализацию этой бесполезности.так получается, увольте, приходится. даже 8i томом решениями на 12-ке пользоваться.Проспись/протрезвей и переведи. K790+ и ноги не остсюда растут а просто был вопрос:Не следует заинтересованность в знаниях выдавать за обладание ими. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 23:02 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
ElicТ.е. добавление пустого столбца в уже широкую таблицу - это по-прежнему только обновление словаря?да Elicintra - это всего-лишь потому, что возможно chain-ить внутри одного и того же блока, в отличие от природы других chaining-ов.да, первое расщепление - это единственный случай, когда разбивается внутри одного блока ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2017, 00:28 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
xtenderда, первое расщепление - это единственный случай, когда разбивается внутри одного блокаВ общем, точнее будет так: intra-block chaining бывает только при INSERT, при апдейтах будут всегда плодиться новые row pieces в новых блоках... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2017, 06:03 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
xtenderВячеслав Любомудров, Row pieces разбиваются с последнего поля,а не с первого. Т.е. если 355 столбцов то будут два: 100-355 и 1-99Кстати, да Спасибо Это немного проясняет картину А плодятся они (при добавлении новых значений в более последние столбцы) наверняка потому, что объединение кусков при обычной работе не реализовано, ведь теоретически это может вызвать увеличение занимаемого пространства (ну, как один из вариантов, если в хвосте были одни NULL), но самое неприятное, что предыдущие куски могут находиться (и находятся, начиная с 3-го, как показал Саян) в другом блоке. Кстати, если бы разбивка была не с конца, этого бы не требовалось, как я понял При MOVE строка наверняка пересоберется в куски максимального раздела И возникает как минимум 2 вопроса: -- почему выбрана стратегии разбивки именно с конца? -- какого они уезжают в другой блок, если есть еще место в оригинальном? Ведь должны быть этому какие-то обоснования ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2017, 06:37 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
xtenderxtenderда, первое расщепление - это единственный случай, когда разбивается внутри одного блокаВ общем, точнее будет так: intra-block chaining бывает только при INSERT, при апдейтах будут всегда плодиться новые row pieces в новых блоках...Даже если больше 510 столбцов? (при INSERT) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2017, 06:39 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, да: test1-1 Код: plsql 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.
grep -P "^(bdba|block_row_dump|tl: |col )" test11.trc Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2017, 07:21 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Прерву жаркую дискуссию Пока так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
3 и 4 строка соответственно для формулы, столбцов 638 в 4 строке по итогу получилось в конце так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Не поняла правильно или нет, но по 2 строке формулы выбрала часть строк пересчитала ручками, сумма совпала. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2017, 17:53 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Подниму тему из мрачного забвения. Есть очень-очень большая таблица (ну как очень, для меня очень) - несколько миллиардов строк. Полей - меньше 200, последнее поле varchar2(4000), пустое, все значения null, в индексах нет, и хочется его дропнуть. Как физически это осуществляет Оракл? Вопрос потому, что из-за величины таблицы эта операция может некисло подвиснуть и перехлестнуться с различными выборками/обновлениями. На эксперименте с тестовой таблицей такой же структуры, но размером 20 млн записей, drop columns выполнялся пару минут. Я правильно понимаю, что операции обновления ждать окончания DDL? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2019, 13:18 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Чтоб убедиться что они все пустые неободимо все равно просканировать всю таблицу (да еще и гарантировать, что никто не изменит значение столбца за время сканирования) Может не стоит удалять? Переименовать в крайнем случае Можно сделать столбец UNUSED (он будет невиден во всяких select *, но таки останется занимать место и участвовать во всяких ограничениях, типа количества столбцов) А еще есть пакет DBMS_REDEFINITION -- этакий MOVE ONLINE ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2019, 04:36 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, привет ДВР) А сейчас модно DDL обёртывать в системные пакеты? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2019, 05:25 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Не, я столько не выпью ... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2019, 11:40 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
aag, Ну вообще-то поле удаляют когда измeнились бизнес требования или логика обработки (если это вспомогательное поле) а не когда колонка NULL (кстати ты уверен что не сегодня NULL, а завтра родину...). Ну и главное - Oracle издревле не хранит значение последних справа NULL полей (например, если в строке 100 полей и первое не NULL а остaльные NULL то хранится только первое поле а вот если первые 99 NULL а последнее не NULL то хранится 99 однобайтный флажков "я NULL" и затем последнее поле). Так-что в твоем случае уменьшения размера сегмента не будет. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2019, 16:25 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровНе, я столько не выпью ... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2019, 00:03 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
aagмиллиардов строк. … поле varchar2(4000) … хочется его дропнуть.Лучше переименовать в неудобоваримое. Быстро и относительно дёшево. И может когда-нибудь пригодиться для нового varchar2(4000). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2019, 07:52 |
|
Хранение пустых полей
|
|||
---|---|---|---|
#18+
А подскажите по null-значениям. Допустим есть таблица TMP(ID,F1,F2,F3). Добавляю запись: insert into TMP values (1,'f1', 'f2', 'f3') Затем удаляю значения: update TMP set F1=null, F2=null, F3=null where ID=1 Будут ли поля F* занимать место? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2019, 23:36 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1881909]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
15ms |
get forum data: |
2ms |
get page messages: |
91ms |
get tp. blocked users: |
1ms |
others: | 19ms |
total: | 194ms |
0 / 0 |