Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#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. 52. 53. 54. Имеем запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Без пересчёта статистики имеем желаемый план выполнения, показанный на картинке 1 в следующем сообщении. После пересчёта статистики Код: plaintext 1. 1. Почему это имеет место быть? 2. Как посчитать статистику чтобы план выполнения был как на рисунке 1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2011, 06:19 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
Рисунок 1 - хороший план выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2011, 06:19 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
Рисунок 2 - плохой план выполнения после пересчёта статистики: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2011, 06:20 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
Алексей Кплан выполнения ухудшается, появляется table scan А вы фактическую скорость выполнения запроса измеряли на реальных данных, или просто не любите table scan? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2011, 07:14 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
mustaccioАлексей Кплан выполнения ухудшается, появляется table scan А вы фактическую скорость выполнения запроса измеряли на реальных данных, или просто не любите table scan?Да. Это упрощённая схема запроса, с большим количеством вложенных запросов и джоинов. Реальный запрос выполняется ~1.5 ... 2 секунды. На мой взгляд это много, чтобы извлечь ~20 записей при наличии соответствующих индексов. Тем более, что в процессе эксплуатации ожидается существенное увеличение числа записей в этих таблицах. После загрузки в эти тестовые таблицы части реальных данных (TABLE1 ~ 20000 записей, TABLE2 ~5000 записей) - план выполнения становится как на рис 2, даже без принудительного пересчёта статистики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2011, 07:32 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
После добавления в Table1 38678 записей, в Table2 4145 записей - упорно делается HSJOIN + TSCAN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2011, 07:56 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
Алексей К... план выполнения ухудшается, появляется table scan. Нежелательный план выполнения показан на рисунке 2 в следующем сообщении. 1. Почему это имеет место быть? 2. Как посчитать статистику чтобы план выполнения был как на рисунке 1 ?DB2, как и многие другие СУБД использует оптимизационную технику, основанную на стоимости запроса. В данном случае оно, основываясь на доступной статистике, решило, что дешевле просканировать таблицу, чем обращаться к ней по индексу. Вы можете использовать оптимизационные профили, чтобы получить желаемый план. Influence query optimization with optimization profiles and statistical views in DB2 9 Т.е. создаёте таблицу: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext Текстовый файл optprof.xml (текст запроса чувствителен к регистру): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: plaintext 1. 2. 3. Устанавливаете у себя в сессии профиль: Код: plaintext Обращаете внимание на цену запроса и его время выполнения в обоих случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2011, 15:43 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
Во-первых, как я понял, у вас не было фактической возможности измерить скорость выполнения запроса с планом 1, так как при наличии данных в таблицах всегда выбирается план 2. Вполне вероятно, что план 2 - и есть самый оптимальный в данном случае. Во-вторых, я бы попробовал Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2011, 15:54 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein mustaccio Спасибо! Буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2011, 06:10 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
Алексей К, Чтобы попытаться понять почему ДБ2 выбирает табличное сканирование нужно больше информации. Выполните, пожалуйста, следующие шаги и выложите результат сюда: 1. explain plan with snapshot for ваш запрос 2. db2exfmt -d имя базы -1 -o plan.out ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2011, 11:02 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#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. 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. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784. 785. 786. 787. 788. 789. 790. 791. 792. 793. 794. 795. 796. 797. 798. 799. 800. 801. 802. 803. 804. 805. 806. 807. 808. 809. 810. 811. 812. 813. 814. 815. 816. 817. 818. 819. 820. 821. 822. 823. 824. 825. 826. 827. 828. 829. 830. 831. 832. 833. 834. 835. 836. 837. 838. 839. 840. 841. 842. 843. 844. 845. 846. 847. 848. 849. 850. 851. 852. 853. 854. 855. 856. 857. 858. 859. 860. 861. 862. 863. 864. 865. 866. 867. 868. 869. 870. 871. 872. 873. 874. 875. 876. 877. 878. 879. 880. 881. 882. 883. 884. 885. 886. 887. 888. 889. 890. 891. 892. 893. 894. 895. 896. 897. 898. 899. 900. 901. 902. 903. 904. 905. 906. 907. 908. 909. 910. 911. 912. 913. 914. 915. 916. 917. 918. 919. 920. 921. 922. 923. 924. 925. 926. 927. 928. 929. 930. 931. 932. 933. 934. 935. 936. 937. 938. 939. 940. 941. 942. 943. 944. 945. 946. 947. 948. 949. 950. 951. 952. 953. 954. 955. 956. 957. 958. 959. 960. 961. 962. 963. 964. 965. 966. 967. 968. 969. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2011, 12:03 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
Алексей К, 9.5 под рукой нет, но в 9.7 у меня при маленькой табличке TABLE2 идет HSJOIN + TBSCAN, а при размере в 100 страниц (update SYSSTAT.TABLES set NPAGES = 100, FPAGES=100 where tabname = 'TABLE2') уже идет NLJOIN + IXSCAN. Если не хочется заморачиваться с профилями как советует Марк, можно создать индекс по TABLE2 вот так: Код: plaintext 1. 2. После этого в 9.7 даже на маленьких табличках происходит NLJOIN + IXSCAN c INDEX ONLY ACCESS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 17:20 |
|
||
|
План выполнения и статистика.
|
|||
|---|---|---|---|
|
#18+
sadsad_at_tomsk9.5 под рукой нет, но в 9.7 у меня при маленькой табличке TABLE2 идет HSJOIN + TBSCAN, а при размере в 100 страниц (update SYSSTAT.TABLES set NPAGES = 100, FPAGES=100 where tabname = 'TABLE2') уже идет NLJOIN + IXSCAN.Да странно как-то всё это. В одном запросе практически аналогичный доступ к той же таблице производится по-разному. sadsad_at_tomskЕсли не хочется заморачиваться с профилями как советует МаркКонечно не хочется. :-) sadsad_at_tomskможно создать индекс по TABLE2 вот так: Код: plaintext 1. 2. В общем, пока запрос разбили на 3 запроса поменьше. Помогло. Дальше посмотрим... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 06:02 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=37386265&tid=1602159]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 305ms |
| total: | 562ms |

| 0 / 0 |
