|
Хранение пустых полей
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=52&msg=39884776&tid=1881909]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 168ms |
0 / 0 |