INF: T?i ưu hóa Microsoft SQL Server Performance

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 110352 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Đ? có hi?u qu? nh?t t?i ưu hóa hi?u su?t Microsoft SQL Server, b?n ph?i xác đ?nh các khu v?c mà s? mang l?i tăng hi?u su?t l?n hơn s? đa d?ng r?ng nh?t c?a t?nh hu?ng, và phân tích t?p trung vào các khu v?c này. N?u không, b?n có th? expend đáng k? th?i gian và n? l?c trên các ch? đ? có th? không mang l?i c?i ti?n đáng k?.

Đ?i v?i h?u h?t các ph?n, các thông tin sau đây không đ? c?p các các v?n đ? hi?u su?t b?t ngu?n t? multiuser concurrency. Đây là m?t ch? đ? riêng bi?t, ph?c t?p đư?c bao ph? trong tài li?u "t?i đa Cơ s? d? li?u tính nh?t quán và Concurrency,"mà có th? đư?c t?m th?y trong SQL Server Phiên b?n 4.2 x "L?p tr?nh viên c?a tài li?u tham kh?o cho C," ph? l?c E, và c?ng trong khác Bài vi?t cơ s? ki?n th?c. Nó không ph?i là trong tài li?u Phiên b?n 6.0, nhưng có th? đư?c t?m th?y trên đ?a CD MSDN (Microsoft Developer Network) theo đó tiêu đ?.

Ch? không ph?i là m?t cu?c th?o lu?n l? thuy?t, bài vi?t này t?p trung ch? y?u vào khu v?c này có nhi?u năm kinh nghi?m b?i đ?i ng? h? tr? Microsoft SQL Server hi?n th? đư?c giá tr? th?c t? trong nh?ng t?nh hu?ng th? gi?i th?c.

Kinh nghi?m cho th?y r?ng l?i ích l?n nh?t trong SQL Server hi?u su?t có th? thu đư?c t? các khu v?c chung c?a cơ s? d? li?u h?p l? thi?t k?, thi?t k? ch? m?c, truy v?n thi?t k?, và thi?t k? ?ng d?ng. Ngư?c l?i, hi?u su?t l?n nh?t v?n đ? thư?ng x?y ra do thi?u sót trong các khu v?c tương t?. N?u b?n đang có liên quan v?i hi?u su?t, b?n nên t?p trung vào các khu v?c này l?n đ?u tiên, b?i v? nh?ng c?i ti?n hi?u su?t r?t l?n thư?ng có th? đ?t đư?c v?i m?t tương đ?i đ?u tư th?i gian nh?.

Trong khi hi?u su?t h? th?ng c?p khác các v?n đ?, ch?ng h?n như b? nh?, b? nh? cache b? đ?m, ph?n c?ng, và vv, ch?c ch?n là ?ng c? viên cho vi?c h?c t?p, kinh nghi?m cho th?y r?ng đ?t đư?c hi?u su?t t? các khu v?c này thư?ng là gia tăng. SQL Máy ch? qu?n l? tài nguyên ph?n c?ng có s?n t? đ?ng, đ?i v?i h?u h?t các m?t ph?n, làm gi?m s? c?n thi?t (và do đó, l?i ích) c?a r?ng r?i h? th?ng c?p tay ch?nh.

Microsoft SQL Server 6.0 cung c?p nh?ng cơ h?i m?i cho n?n t?ng-l?p c?i thi?n hi?u su?t, v?i m?t lư?ng l?n b? nh?, đ?i x?ng đa, quét d? li?u song song, c?i ti?n tr?nh t?i ưu hoá và đ?a phân chia. Tuy nhiên, l?n như các c?i ti?n này, h? đang h?u h?n trong ph?m vi. Máy tính nhanh nh?t có th? đư?c bogged xu?ng v?i truy v?n không hi?u qu? ho?c m?t ?ng d?ng đư?c thi?t k? kém. V? v?y, ngay c? v?i các ho?t đ?ng b? sung tăng r?ng SQL Server 6.0 cho phép, nó là vô cùng quan tr?ng đ? t?i ưu hóa các cơ s? d? li?u, ch? m?c, truy v?n và thi?t k? ?ng d?ng.

H?u h?t các v?n đ? hi?u su?t có th? không đư?c gi?i quy?t thành công v?i duy nh?t m?t t?p trung phía máy ch?. H? ph?c v? là cơ b?n m?t "r?i" c?a khách hàng, ki?m soát nh?ng g? truy v?n đư?c g?i, và do đó nh?ng g? ? khóa đư?c thu đư?c và phát hành. M?c dù m?t s? đi?u ch?nh th? v? phía máy ch?, ngh? quy?t thành công v?n đ? hi?u su?t s? thư?ng ph? thu?c ngày ghi nh?n vai tr? th?ng tr? khách hàng đóng trong v?n đ? và phân tích hành vi ?ng d?ng khách hàng.

THÔNG TIN THÊM

Sau đây là m?t s? g?i ? r?ng, d?a trên kinh nghi?m, đ? mang hi?u su?t đáng k? thu:

B?nh thư?ng hóa h?p l? cơ s? d? li?u thi?t k?

B?nh thư?ng hoá h?p l? thi?t k? cơ s? d? li?u h?p l? c?a s?n lư?ng t?t nh?t hi?u su?t. M?t s? lư?ng l?n c?a h?p b?ng là đ?c tính c?a m?t cơ s? d? li?u b?nh thư?ng. M?t s? ít r?ng bàn là đ?c tính c?a m?t cơ s? d? li?u denormalized. Cơ s? d? li?u r?t b?nh thư?ng đư?c thư?ng xuyên liên k?t v?i tham gia quan h? ph?c t?p, mà có th? t?n thương hi?u su?t. Tuy nhiên, SQL T?i ưu hóa máy ch? là r?t hi?u qu? t?i ch?n tham gia nhanh chóng, hi?u qu?, như mi?n là có hi?u qu? ch? s? có s?n.

L?i ích c?a b?nh thư?ng bao g?m:
  • Tăng t?c phân lo?i và ch? s? sáng t?o, v? b?ng là h?p hơn.
  • Cho phép nhi?u nhóm ch? s?, b?i v? có r?t nhi?u b?ng.
  • Ch? s? có xu hư?ng h?p hơn và nhi?u hơn n?a nh? g?n.
  • Ch? s? ít hơn cho m?i b?ng, giúp th?c hi?n C?p Nh?t.
  • NULLs ít hơn và ít d? ph?ng d? li?u, tăng cơ s? d? li?u compactness.
  • Làm gi?m tác đ?ng concurrency c?a DBCC ch?n đoán, b?i v? các c?n thi?t b?ng khóa s? ?nh hư?ng đ?n d? li?u ít hơn.
V?i SQL Server, b?nh thư?ng hoá h?p l? thư?ng giúp hơn là đau hi?u su?t. Như b?nh thư?ng hoá tăng, v? v?y làm s? và ph?c t?p c?a tham gia yêu c?u đ? t?i v? d? li?u. Như m?t thô quy lu?t c?a, Microsoft cho th?y mang vào quá tr?nh b?nh thư?ng hoá tr? khi đi?u này gây ra r?t nhi?u truy v?n đ? có b?n chi?u ho?c l?n hơn tham gia.

N?u thi?t k? cơ s? d? li?u h?p l? đ? đư?c c? đ?nh và t?ng s? thi?t k? l?i không ph?i là kh? thi, có th? ch?n l?c b?nh thư?ng hóa m?t b?ng l?n n?u phân tích cho th?y m?t nút c? chai trên b?ng này. N?u truy c?p vào cơ s? d? li?u ti?n hành thông qua các th? t?c đư?c lưu tr?, thay đ?i lư?c đ? này có th? x?y ra mà không có tác đ?ng đ?n các ?ng d?ng. N?u không, có th? đ? ?n các thay đ?i b?ng cách t?o ra m?t cái nh?n gi?ng như m?t b?ng duy nh?t.

S? d?ng hi?u qu? ch? s? thi?t k?

Không gi?ng như nhi?u h? th?ng không quan h?, ch? s? quan h? không đư?c xem m?t ph?n c?a thi?t k? cơ s? d? li?u h?p l?. Ch? s? có th? đư?c gi?m xu?ng, nói thêm, và thay đ?i mà không ?nh hư?ng đ?n cơ s? d? li?u đ? ho?c ?ng d?ng thi?t k? trong b?t k? theo cách khác hơn hi?u su?t. Thi?t k? hi?u qu? ch? s? là t?i thư?ng trong đ? đ?t đư?c hi?u su?t t?t SQL Server. Đ?i v?i nh?ng l? do này, b?n không nên ng?n ng?i th? nghi?m v?i danh m?c khác nhau.

T?i ưu hóa đáng tin c?y l?a ch?n ch? s? hi?u qu? nh?t trong ph?n l?n trư?ng h?p. Chi?n lư?c thi?t k? t?ng th? c?a ch? s? nên là cung c?p m?t t?t l?a ch?n ch? s? đ? t?i ưu hóa, và tin tư?ng nó đ? th?c hi?n quy?n quy?t đ?nh. Đi?u này làm gi?m th?i gian phân tích và cho hi?u su?t t?t hơn m?t r?ng nhi?u t?nh hu?ng.

Sau đây là ch? m?c thi?t k? khuy?n ngh?:
  • Ki?m tra WHERE kho?n c?a các truy v?n SQL, b?i v? đây là nh?ng t?p trung ch? y?u c?a t?i ưu hóa.

    M?i c?t đư?c li?t kê trong WHERE kho?n là m?t ?ng c? viên có th? cho m?t ch? s?. N?u b?n có th?c m?c quá nhi?u đ? xem xét, ch?n m?t ngư?i đ?i di?n thi?t l?p, ho?c ch? là nh?ng ch?m. N?u b?n phát tri?n công c? minh b?ch t?o ra SQL m?, đi?u này là khó khăn hơn. Nhi?u ngư?i trong s? nh?ng công c? cho phép ghi s? cú pháp SQL t?o ra m?t t?p tin ho?c màn h?nh cho m?c đích g? l?i. B?n có th? mu?n t?m hi?u t? nhà cung c?p công c? n?u m?t tính năng có s?n.
  • S? d?ng ch? s? h?p.

    Ch? s? h?p thư?ng là nhi?u hơn n?a hi?u qu? hơn multicolumn, h?p ch?t ch? s?. Thu h?p danh m?c có thêm hàng trên m?i trang, và ít hơn ch? m?c c?p, thúc đ?y hi?u su?t.

    T?i ưu hóa có th? nhanh chóng và hi?u qu? phân tích hàng trăm, ho?c th?m chí hàng ngàn, kh? năng ch? m?c và tham gia. Có m?t s? lư?ng l?n h?p ch? s? cung c?p t?i ưu hóa v?i nhi?u kh? năng đ? l?a ch?n t?, mà thư?ng s? giúp hi?u su?t. Có ít hơn r?ng, multicolumn ch? s? cung c?p t?i ưu hóa v?i kh? năng ít hơn đ? l?a ch?n, mà có th? t?n thương hi?u su?t.

    Ngư?i ta thư?ng không t?t nh?t đ? áp d?ng m?t chi?n lư?c c?a nh?n m?nh m?t đư?c b?o hi?m đ?y đ? truy v?n. Nó là đúng là n?u t?t c? các c?t trong kho?n l?a ch?n c?a b?n đư?c b?o hi?m b?i m?t phi t?p trung ch? m?c, t?i ưu hóa có th? nh?n ra đi?u này và cung c?p hi?u su?t r?t t?t. Tuy nhiên, đi?u này thư?ng là k?t qu? trong r?t r?ng đánh ch? m?c và d?a quá nhi?u vào kh? năng t?i ưu hóa s? s? d?ng chi?n lư?c này. Thông thư?ng, b?n nên s? d?ng nhi?u hơn h?p l?p ch? m?c mà thư?ng cung c?p hi?u su?t t?t hơn trên m?t ph?m vi r?ng hơn c?a các truy v?n.

    B?n không c?n ph?i có ch? s? nhi?u hơn là c?n thi?t đ? đ?t đư?c đ?y đ? đ?c hi?u su?t do c?a chi phí tham gia vào vi?c c?p nh?t nh?ng ch? s?. Tuy nhiên, ngay c? h?u h?t C?p Nh?t theo đ?nh hư?ng ho?t đ?ng đ?i h?i thêm r?t nhi?u đ?c hơn b?ng văn b?n. V? v?y, đ?ng ng?n ng?i th? m?t ch? s? m?i n?u b?n ngh? r?ng nó s? giúp; b?n luôn luôn có th? th? nó sau này.
  • S? d?ng nhóm ch? s?.

    Thích h?p s? d?ng nhóm ch? s? có th? r?t nhi?u tăng hi?u su?t. Th?m chí C?p Nh?t và xoá các ho?t đ?ng thư?ng đư?c tăng t?c c?a nhóm ch? s?, b?i v? các ho?t đ?ng này đ?i h?i nhi?u đ?c. Một ch? s? c?m duy nh?t cho m?i b?ng đư?c cho phép, vaäy baïn neân duøng ch? s? này m?t cách khôn ngoan. Truy v?n mà tr? v? r?t nhi?u hàng ho?c truy v?n liên quan đ?n m?t lo?t các các giá tr?, là ?ng c? viên t?t cho tăng t?c c?a m?t ch? s? nhóm.

    Ví d?:
          SELECT * FROM PHONEBOOK
          WHERE LASTNAME='SMITH'
    
          -or-
    
          SELECT * FROM MEMBERTABLE
          WHERE  MEMBER_NO > 5000
           AND MEMBER_NO < 6000
    
    						
    Ngư?c l?i, các LASTNAME ho?c MEMBER_NO c?t nêu trên ?ng c? viên có l? không t?t cho ch? m?t phi nhóm m?c n?u này lo?i truy v?n là ph? bi?n. H?y th? s? d?ng l?p ch? m?c không t?p trung vào c?t nơi vài hàng tr? l?i.
  • Ki?m tra tính đ?c đáo c?t.

    Đi?u này s? giúp b?n quy?t đ?nh nh?ng g? c?t là m?t ?ng c? viên cho m?t ch? s? nhóm, không nhóm ch? s?, ho?c không index.

    Dư?i đây là m?t ví d? truy v?n đ? ki?m tra tính đ?c đáo c?t:
          SELECT COUNT (DISTINCT COLNAME)
          FROM TABLENAME
    
    						
    Đi?u này tr? v? s? lư?ng các giá tr? duy nh?t trong c?t. So sánh này đ? T?ng s? hàng trong b?ng. Trên 10.000-row bàn, 5.000 các giá tr? duy nh?t s? làm cho c?t m?t ?ng c? viên t?t cho m?t phi-nhóm ch? s?. Vào cùng m?t b?ng, 20 các giá tr? duy nh?t s? phù h?p t?t hơn v?i m?t nhóm ch? s?. Ba giá tr? duy nh?t nên không đư?c l?p ch? m?c ? t?t c?. Đây là nh?ng ch? Ví d?, quy t?c c?ng và nhanh chóng không. H?y nh? đ? đ?t các ch? s? trên các cá nhân c?t đư?c li?t kê trong m?nh đ? nơi c?a các truy v?n.
  • Ki?m tra phân ph?i d? li?u trong c?t đư?c đánh ch? m?c.

    Thư?ng m?t dài ch?y truy v?n x?y ra b?i v? m?t c?t v?i ít đ?c đáo giá tr? đư?c l?p ch? m?c, ho?c tham gia vào m?t c?t đư?c th?c hi?n. Đây là m?t v?n đ? cơ b?n v?i các d? li?u và truy v?n riêng c?a m?nh, và không th? thư?ng đư?c gi?i quy?t mà không c?n xác đ?nh t?nh tr?ng này. Ví d?, m?t v?t l? thư m?c đi?n tho?i đư?c s?p x?p theo th? t? abc vào tên cu?i cùng s? không đ?y nhanh nh?n lên m?t ngư?i n?u t?t c? m?i ngư?i trong thành ph? đư?c đ?t tên ch? "Smith" ho?c "Jones." Thêm vào truy v?n ? trên, trong đó cung c?p cho m?t nhân v?t duy nh?t cho c?t tính đ?c đáo, b?n có th? s? d?ng m?t nhóm b?i truy v?n đ? xem d? li?u phân ph?i c?a các giá tr? quan tr?ng đư?c đánh ch? m?c. Đi?u này cung c?p m?t cao đ? phân gi?i h?nh ?nh c?a các d? li?u, và m?t vi?n c?nh t?t hơn cho làm th? nào các t?i ưu hóa xem d? li?u.

    Dư?i đây là m?t ví d? truy v?n đ? ki?m tra phân ph?i d? li?u l?p ch? m?c các giá tr? quan tr?ng, gi? s? m?t hai c?t phím trên COL1, COL2:
          SELECT COL1, COL2, COUNT(*)
          FROM TABLENAME
          GROUP BY COL1, COL2
    
    						
    Đi?u này s? tr? v? m?t hàng cho m?i giá tr? quan tr?ng, v?i m?t s? c?a các trư?ng h?p c?a m?i giá tr?. Đ? gi?m b?t s? lư?ng hàng tr? l?i, nó có th? r?t h?u ích đ? lo?i tr? m?t s? v?i m?t đi?u kho?n HAVING. Ví d?, các kho?n
          HAVING COUNT(*) > 1
    
    						
    s? lo?i tr? t?t c? các hàng mà có m?t khóa duy nh?t.

    S? hàng tr? l?i trong m?t truy v?n c?ng là m?t y?u t? quan tr?ng trong ch? s? l?a ch?n. T?i ưu hóa s? xem xét m?t ch? m?c không t?p trung vào chi phí ít nh?t m?t trang I/O m?i tr? l?i hàng. ? m?c này, nó nhanh chóng tr? thành hi?u qu? hơn đ? quét toàn b? b?ng. Đây là m?t l? do khác đ? h?n ch? kích thư?c c?a thi?t l?p k?t qu? ho?c đ? xác đ?nh v? trí k?t qu? l?n v?i m?t nhóm ch? s?.
Đánh không luôn luôn đ?ng ch? s? s? d?ng v?i hi?u su?t t?t, và đ?o ngư?c. N?u s? d?ng m?t ch? s? luôn luôn t?o ra s?c nh?t, t?i ưu hóa c?a công vi?c s? r?t đơn gi?n - luôn luôn s? d?ng b?t k? ch? m?c có s?n. Trên th?c t?, s? l?a ch?n không chính xác đư?c đánh ch? m?c truy có th? d?n đ?n hi?u su?t r?t x?u. Do đó c?a t?i ưu hóa công vi?c là đ? ch?n đư?c đánh ch? m?c truy nơi nó s? giúp hi?u su?t, và tránh đư?c đánh ch? m?c truy nơi nó s? đau hi?u su?t.

S? d?ng hi?u qu? truy v?n thi?t k?

M?t s? lo?i truy v?n v?n là ngu?n l?c chuyên sâu. Đi?u này liên quan đ?n cơ s? d? li?u cơ b?n và ch? s? các v?n đ? ph? bi?n nh?t quan h? cơ s? d? li?u h? th?ng qu?n l? (RDBMSs), không c? th? đ? SQL Server. H? không ph?i là không hi?u qu?, b?i v? t?i ưu hóa s? th?c hi?n các truy v?n trong nhi?u nh?t hi?u qu? th?i trang nh?t có th?. Tuy nhiên, h? là ngu?n l?c chuyên sâu, và các thi?t l?p theo đ?nh hư?ng ch?t c?a SQL có th? làm cho chúng xu?t hi?n không hi?u qu?. Không có m?c đ? t?i ưu hóa thông minh có th? lo?i b? chi phí v?n có tài nguyên này xây d?ng. H? là intrinsically t?n kém khi so sánh v?i m?t đơn gi?n hơn truy v?n. M?c dù SQL Server s? s? d?ng k? ho?ch ti?p c?n t?i ưu nh?t, đi?u này là gi?i h?n b?i nh?ng g? là v? cơ b?n có th?.

Ví dụ:
  • K?t qu? l?n b?
  • IN, NOT IN và ho?c truy v?n
  • Đánh giá cao không duy nh?t nơi m?nh đ?
  • ! = (không b?ng nhau) so sánh các nư?c s? d?ng
  • M?t s? ch?c năng c?t, ch?ng h?n như SUM
  • Bi?u th?c ho?c d? li?u chuy?n đ?i trong WHERE kho?n
  • Các bi?n đ?a phương trong WHERE kho?n
  • S? l?n xem ph?c t?p v?i nhóm b?i
Y?u t? khác nhau có th? necessitate vi?c s? d?ng c?a m?t s? các c?u trúc truy v?n. Tác đ?ng này s? đư?c gi?m đi n?u t?i ưu hóa có th? h?n ch? các k?t qu? thi?t l?p trư?c khi áp d?ng các ph?n ngu?n l?c chuyên sâu c?a các truy v?n. Các sau đây là m?t s? ví d?.

Tài nguyên-chuyên sâu:
   SELECT SUM(SALARY) FROM TABLE
				

Ít tài nguyên-chuyên sâu:
   SELECT SUM(SALARY) FROM TABLE WHERE
   ZIP='98052'
				

Tài nguyên-chuyên sâu:
   SELECT * FROM TABLE WHERE
   LNAME=@VAR
				

Ít tài nguyên-chuyên sâu:
   SELECT * FROM TABLE
   WHERE LNAME=@VAR AND ZIP='98052'
				

Trong ví d? đ?u tiên, chi?n d?ch t?ng th? không đư?c tăng t?c v?i m?t ch? s?. M?i d?ng ph?i đư?c đ?c và t?ng k?t. Gi? s? là m?t ch? s? trên c?t ZIP, t?i ưu hóa s? có kh? năng dùng đi?u này ban đ?u haïn k?t qu? thi?t l?p trư?c khi áp d?ng các t?ng. Đi?u này có th? nhanh hơn nhi?u.

Trong ví d? th? hai, bi?n đ?a phương không đư?c gi?i quy?t cho đ?n khi th?i gian ch?y. Tuy nhiên, c? tôi ưu hoa không th? tr? ho?n s? l?a ch?n c?a k? ho?ch truy c?p cho đ?n khi ch?y th?i gian; nó ph?i ch?n t?i th?i gian biên d?ch. Chưa lúc biên d?ch, khi nh?ng ngư?i truy c?p k? ho?ch đư?c xây d?ng, giá tr? c?a @ VAR không đư?c bi?t đ?n và do đó không th? đư?c s? d?ng như đ?u vào đ? l?a ch?n ch? s?.

K? thu?t minh h?a cho c?i ti?n bao g?m vi?c h?n ch? k?t qu? thi?t l?p v?i m?t m?nh đ? và. Như là m?t k? thu?t khác, s? d?ng m?t th? t?c đư?c lưu tr?, và vư?t qua giá tr? cho @ VAR như m?t tham s? v?i các th? t?c đư?c lưu tr?.

Trong m?t s? trư?ng h?p nó là t?t nh?t đ? s? d?ng m?t nhóm các truy v?n đơn gi?n b?ng cách s? d?ng b?ng t?m đ? lưu tr? các k?t qu? trung gian hơn đ? s? d?ng m?t truy v?n r?t ph?c t?p duy nh?t.

K?t qu? l?n t?p là t?n kém v? h?u h?t RDBMSs. B?n nên c? g?ng không đ? tr? l?i m?t k?t qu? l?n đ?t cho khách hàng đ? l?a ch?n d? li?u cu?i cùng c?a tr?nh duy?t. Nó là nhi?u hi?u qu? hơn đ? h?n ch? kích thư?c c?a k?t qu? thi?t l?p, cho phép các h? th?ng cơ s? d? li?u đ? th?c hi?n ch?c năng mà nó đư?c d? đ?nh. Đi?u này c?ng làm gi?m m?ng I/O, và làm cho các ?ng d?ng hơn amenable đ? tri?n khai trên toàn liên k?t ch?m giao ti?p t? xa. Nó c?ng c?i thi?n concurrency liên quan đ?n hi?u su?t như ?ng d?ng quy mô lên nhi?u hơn n?a ngư?i s? d?ng.

S? d?ng hi?u qu? thi?t k? ?ng d?ng

Vai tr? mà ?ng d?ng thi?t k? đóng trong hi?u su?t SQL Server không th? overstated. Ch? không ph?i là h?nh ?nh h? ph?c v? trong vai tr? chi?m ưu th?, nó là nhi?u hơn n?a chính xác đ? h?nh ?nh các khách hàng như m?t th?c th? ki?m soát, và ph?c v? như là m?t con r?i c?a khách hàng. SQL Server là hoàn toàn dư?i s? ch? huy c?a khách hàng liên quan đ?n lo?i truy v?n, khi h? đang g?i, và làm th? nào k?t qu? x? l?. Đi?u này l?n lư?t có ?nh hư?ng l?n trên các lo?i và th?i gian ? khóa, s? lư?ng I/O và CPU t?i trên máy ch?, và v? th? li?u hi?u su?t là t?t hay x?u.

V? l? do này, đi?u quan tr?ng là đ? làm cho các quy?t đ?nh đúng trong các giai đo?n thi?t k? ?ng d?ng. Tuy nhiên ngay c? khi b?n g?p ph?i m?t v?n đ? hi?u su?t b?ng cách s? d?ng m?t ?ng d?ng ch?a khóa trao tay mà thay đ?i đ?n ?ng d?ng khách có v? không th?, đi?u này không thay đ?i các y?u t? cơ b?n mà ?nh hư?ng đ?n hi?u su?t - c? th? là khách hàng đóng m?t vai tr? th?ng tr? và nhi?u ngư?i v?n đ? hi?u su?t không đư?c gi?i quy?t mà không làm cho khách hàng thay đ?i.

V?i m?t ?ng d?ng đư?c thi?t k? t?t, SQL Server là kh? năng h? tr? hàng ngàn ngư?i s? d?ng đ?ng th?i. V?i m?t ?ng d?ng thi?t k? kém, ngay c? n?n t?ng máy ch? m?nh nh?t có th? bog xu?ng v?i ch? m?t vài ngư?i s? d?ng.

B?ng cách s? d?ng nh?ng l?i đ? ngh? sau đây cho thi?t k? ?ng d?ng khách hàng s? cung c?p hi?u su?t t?t SQL Server:
  • S? d?ng k?t qu? nh? b?. Retrieving needlessly l?n qu? b? (ví d?, ngàn hàng) cho tr?nh duy?t trên các khách hàng cho bi?t thêm CPU và m?ng I/O t?i, làm cho các ?ng d?ng ít có kh? năng s? d?ng t? xa, và có th? h?n ch? kh? năng m? r?ng multiuser. Nó là t?t hơn đ? thi?t k? các ?ng d?ng đ? nh?c ngư?i dùng cho đ? đ?u vào, do đó, mà truy v?n đang g?i mà t?o ra k?t qu? khiêm t?n b?.

    K? thu?t thi?t k? ?ng d?ng t?o thu?n l?i cho đi?u này bao g?m gi?i h?n vi?c s? d?ng các k? t? đ?i di?n khi xây d?ng truy v?n, mandating nh?t đ?nh đ?u vào các l?nh v?c, và c?m truy v?n improvised.
  • S? d?ng dbcancel() chính xác trong các ?ng d?ng DB-thư vi?n. T?t c? các ?ng d?ng nên cho phép h?y b? m?t truy v?n trong ti?n tr?nh. ?ng d?ng không nên bu?c ngư?i dùng ph?i kh?i đ?ng l?i máy tính khách hàng đ? h?y b? m?t truy v?n. Không Theo nguyên t?c này có th? d?n t?i v?n đ? hi?u su?t có th? không gi?i quy?t. Khi dbcancel() đư?c s? d?ng, thích h?p chăm sóc nên đư?c th?c hi?n liên quan đ?n giao d?ch c?p. Đ? bi?t thêm chi ti?t, xin vui l?ng xem các bài vi?t sau trong cơ s? ki?n th?c Microsoft:
    117143: INF: khi nào và làm th? nào đ? s? d?ng dbcancel() ho?c sqlcancel()
    Các v?n đ? tương t? áp d?ng cho các ?ng d?ng ODBC, n?u ODBC sqlcancel() cu?c g?i đư?c s? d?ng.
  • Luôn luôn x? l? t?t c? các k?t qu? đ? hoàn thành. Không thi?t k? ?ng d?ng ho?c s? d?ng m?t ?ng d?ng ch?a khóa trao tay mà d?ng ch? bi?n k?t qu? hàng mà không có H?y b? các truy v?n. Làm như v?y s? thư?ng d?n đ?n ch?n và ch?m hi?u su?t.
  • Luôn luôn th?c hi?n m?t th?i gian ch? truy v?n. Không cho phép truy v?n đ? ch?y vô th?i h?n. Làm cho thích h?p DB-thư vi?n ho?c ODBC g?i đ? thi?t l?p m?t th?i gian ch? truy v?n. Trong DB-thư vi?n, đi?u này đư?c th?c hi?n v?i các cu?c g?i dbsettime(), và trong ODBC v?i SQLSetStmtOption().
  • Không s? d?ng m?t công c? phát tri?n ?ng d?ng mà không cho phép r? ràng ki?m soát đ?i v?i SQL phát bi?u đư?c g?i đ?n h? ph?c v?. Không s? d?ng m?t công c? mà minh b?ch t?o ra SQL phát bi?u d?a trên cao hơn c?p các đ?i tư?ng, tr? khi nó cung c?p tính năng r?t quan tr?ng như truy v?n H?y b?, th?i gian ch? truy v?n và ki?m soát giao d?ch hoàn toàn. Nó là thư?ng không th? duy tr? hi?u năng t?t ho?c đ? gi?i quy?t m?t v?n đ? hi?u su?t n?u ?ng d?ng t?t c? b?i chính nó t?o ra "minh b?ch SQL," b?i v? đi?u này không cho phép đi?u khi?n r? ràng hơn giao d?ch và khóa các v?n đ? đó là quan tr?ng đ?i v?i hi?u su?t h?nh ?nh.
  • Không intermix h? tr? quy?t đ?nh và x? l? giao d?ch tr?c tuy?n Truy v?n (OLTP).
  • Không thi?t k? ?ng d?ng ho?c s? d?ng m?t ?ng d?ng ch?a khóa trao tay l?c lư?ng ngư?i s? d?ng đ? kh?i đ?ng l?i máy tính khách hàng đ? h?y b? m?t truy v?n. Đi?u này có th? gây ra m?t lo?t các v?n đ? hi?u su?t r?t khó đ? gi?i quy?t b?i v? có th? k?t n?i m? côi. Đ? bi?t thêm chi ti?t, xem các bài vi?t sau trong cơ s? ki?n th?c Microsoft:
    137983: Làm th? nào đ? kh?c ph?c s? c? k?t n?i m? côi trong SQL Server

K? thu?t phân tích hi?u su?t ch?m

Nó có th? đư?c h?p đ? gi?i quy?t m?t v?n đ? hi?u su?t ch? duy nh?t c?a h? th?ng c?p máy ch? hi?u su?t đi?u ch?nh. Ví d?, có bao nhiêu b? nh?, lo?i t?p h? th?ng, s? lư?ng và lo?i b? vi x? l?, và vv. Kinh nghi?m c?a Microsoft SQL Server h? tr? đ? cho th?y r?ng h?u h?t v?n đ? hi?u su?t không th? đư?c gi?i quy?t b?ng cách này. H? ph?i đư?c gi?i quy?t b?ng cách phân tích các ?ng d?ng, các truy v?n ?ng d?ng đ? tr?nh cơ s? d? li?u, và làm th? nào các truy v?n này tương tác v?i đ? cơ s? d? li?u.

Trư?c tiên, cô l?p các truy v?n ho?c truy v?n ch?m. Thư?ng có v? là m?t ?ng d?ng toàn b? là ch?m, khi ch? có m?t vài ngư?i trong s? các truy v?n SQL là ch?m. Nó thư?ng không th? đư?c gi?i quy?t m?t v?n đ? hi?u su?t mà không c?n phá v?n đ? b? và cô l?p các truy v?n ch?m. N?u b?n có m?t công c? phát tri?n minh b?ch t?o SQL, s? d?ng b?t k? có s?n ch?n đoán ho?c ch? đ? g? l?i c?a công c? này đ? n?m b?t SQL đư?c t?o ra. Trong nhi?u trư?ng h?p water tính năng có s?n, nhưng h? không có th? đư?c công khai tài li?u. Liên h? v?i s? h? tr? k? thu?t cho ?ng d?ng c?a b?n đ? xác đ?nh n?u m?t d?u v?t tính năng t?n t?i đ? giám sát SQL phát bi?u đư?c t?o ra b?i các ?ng d?ng.

Đ?i v?i ?ng d?ng phát tri?n công c? s? d?ng nhúng SQL, đi?u này là r?t d? dàng hơn - SQL là công khai nh?n th?y đư?c.

N?u phát tri?n công c? ho?c ngư?i dùng cu?i đơn c?a b?n không cung c?p m?t d?u v?t tính năng, có m?t s? l?a ch?n thay th?:
  • S? d?ng lá c? water 4032 theo đi?u hư?ng d?n trong SQL Máy ch? 4.2 x "G? r?i hư?ng d?n", và các máy ch? SQL 6.0 "Giao d?ch-SQL Reference." Đi?u này s? cho phép ch?p c?a SQL phát bi?u g?i t?i h? ph?c v? trong Nh?t k? l?i SQL.
  • Theo d?i truy v?n thông qua m?t phân tích m?ng như Microsoft m?ng Giám sát, mà là m?t ph?n c?a h? th?ng qu?n l? máy ch?.
  • Cho các ?ng d?ng ODBC, s? d?ng chương tr?nh qu?n tr? ODBC đ? ch?n truy t?m ODBC cu?c g?i. Xem tài li?u ODBC cho bi?t thêm chi ti?t.
  • S? d?ng m?t bên th? ba phía khách hàng ti?n ích mà ch?n SQL lúc các DB-thư vi?n ho?c ODBC l?p. M?t ví d? này là SQL Inspector t? Blue Đ?m phá ph?n m?m.
  • S? d?ng công c? phân tích SQLEye đư?c cung c?p như là m?t ví d? trong Microsoft TechNet CD. Lưu ?: SQLEye không đư?c h? tr? b?i Microsoft k? thu?t H? tr?.
Sau khi truy v?n ch?m là cô l?p, làm như sau:
  • Ch?y truy v?n ch?m n?u có nghi ng? trong s? cô l?p, b?ng cách s? d?ng m?t công c? truy v?n như ISQL, và xác minh r?ng nó là ch?m. Nó thư?ng là t?t nh?t đ? ch?y truy v?n trên máy tính riêng c?a m?nh b?ng cách s? d?ng ISQL và đư?ng ?ng đ?a phương, và chuy?n hư?ng các đ?u ra vào m?t t?p tin. Đi?u này giúp lo?i b? các y?u t? ph?c t?p, ch?ng h?n như m?ng và màn h?nh I/O, và ?ng d?ng k?t qu? đ?m.
  • S? d?ng SET th?ng kê IO trên đ? ki?m tra I/O tiêu th? b?i các truy v?n. Chú ? các tính h?p l? trang I/Os. M?c tiêu c?a t?i ưu hóa là gi?m thi?u I/O đ?m. Làm cho m?t k? l?c c?a Bá tư?c I/O h?p l?. Đi?u này t?o thành m?t đư?ng cơ s? mà đo lư?ng c?i ti?n. Ngư?i ta thư?ng nhi?u hơn n?a hi?u qu? đ? t?p trung đ?c quy?n trên đ?u ra th?ng kê IO và th? nghi?m v?i các lo?i khác nhau truy v?n và ch? m?c hơn đ? s? d?ng đ?t SHOWPLAN ON. Gi?i thích và áp d?ng m?t cách hi?u qu? đ?u ra c?a SHOWPLAN có th? yêu c?u m?t s? nghiên c?u, và có th? tiêu th? th?i gian mà có th? hi?u qu? hơn chi cho các bài ki?m tra th?c nghi?m. N?u v?n đ? hi?u su?t c?a b?n không đư?c c? đ?nh b?i các khuy?n ngh? đơn gi?n, sau đó b?n có th? s? d?ng SHOWPLAN đ? thêm tri?t đ? đi?u tra các hành vi t?i ưu hóa.
  • N?u truy v?n liên quan đ?n m?t xem ho?c th? t?c đư?c lưu tr?, trích xu?t các truy v?n t? xem ho?c th? t?c đư?c lưu tr? và ch?y m?t cách riêng bi?t. Đi?u này cho phép các truy c?p k? ho?ch thay đ?i khi b?n th? nghi?m v?i danh m?c khác nhau. Nó c?ng giúp b?n đ?a hoá v?n đ? đ? truy v?n riêng c?a m?nh, so v?i làm th? nào t?i ưu hóa x? l? các đi?m ho?c th? t?c đư?c lưu tr?. N?u v?n đ? không ph?i là trong truy v?n chính nó nhưng ch? khi truy v?n đư?c ch?y như là m?t ph?n c?a ch? đ? xem ho?c lưu tr? th? t?c, ch?y truy v?n t? nó s? giúp xác đ?nh đi?u này.
  • Đư?c nh?n th?c c?a có th? gây nên trên các b?ng tham gia có th? minh b?ch t?o I/O như kích ho?t ch?y. B?n nên lo?i b? b?t k? gây nên tham gia vào m?t truy v?n ch?m. Đi?u này s? giúp xác đ?nh n?u v?n đ? trong các truy v?n riêng c?a m?nh ho?c kích ho?t ho?c xem, và do đó, s? giúp tr?c ti?p t?p trung c?a b?n.
  • Ki?m tra các ch? s? c?a các b?ng đư?c s? d?ng b?i các truy v?n ch?m. S? d?ng các trư?c đây đư?c li?t kê k? thu?t đ? xác đ?nh n?u đây là nh?ng ch? s? t?t, và thay đ?i chúng n?u c?n thi?t. Như là m?t n? l?c đ?u tiên, h?y th? ch? m?c m?i c?t trong b?n WHERE kho?n. V?n đ? hi?u su?t thư?ng đư?c gây ra b?i ch? đơn gi?n là không có m?t c?t trong WHERE kho?n l?p ch? m?c, ho?c b?ng cách không có m?t h?u ích ch? s? trên m?t c?t.
  • B?ng cách s? d?ng các truy v?n trư?c đó đ? đ? c?p, ki?m tra d? li?u tính đ?c đáo và phân ph?i cho m?i c?t đư?c đ? c?p t?i kho?n này ? đâu, và đ?c bi?t là cho m?i c?t đư?c đánh ch? m?c. Trong nhi?u trư?ng h?p ki?m tra đơn gi?n c?a truy v?n, b?ng, ch? s? và d? li?u ngay l?p t?c s? hi?n th? v?n đ? nguyên nhân. Ví d?, v?n đ? hi?u su?t là thư?ng do có m?t đánh ch? m?c vào m?t ch?a khóa v?i ch? ba ho?c b?n giá tr? duy nh?t, ho?c th?c hi?n m?t Tham gia vào m?t c?t, ho?c tr? l?i m?t s? quá nhi?u hàng đ? các khách hàng.
  • D?a trên nghiên c?u này, th?c hi?n b?t k? thay đ?i c?n thi?t đ? ?ng d?ng, truy v?n, ho?c ch? s?. Ch?y truy v?n m?t l?n n?a sau khi th?c hi?n thay đ?i và quan sát b?t k? s? thay đ?i trong I/O đ?m.
  • Sau khi ghi nh?n s? c?i ti?n, ch?y các ?ng d?ng chính đ? xem t?ng th? hi?u su?t là t?t hơn.
Ki?m tra chương tr?nh cho hành vi c?a I/O ho?c CPU-ràng bu?c. Nó thư?ng là h?u ích cho xác đ?nh m?t truy v?n có I/O ho?c CPU ràng bu?c. Đi?u này s? giúp t?p trung c?i thi?n c?a b?n nh?ng n? l?c trên các nút c? chai đúng s? th?t. Ví d?, n?u m?t truy v?n CPU hư?ng, thêm b? nh? nhi?u hơn cho SQL Server s? có l? không c?i thi?n hi?u su?t, b?i v? nhi?u b? nh? ch? c?i thi?n t? l? hit c?a b? nh? cache, mà trong trư?ng h?p này, hi?n đang cao.

Làm th? nào đ? ki?m tra hành vi I/O vs. CPU-ràng bu?c truy v?n:
  • S? d?ng màn h?nh hi?u su?t Windows NT c?n theo d?i I/O so v?i CPU ho?t đ?ng. Xem t?t c? trư?ng h?p c?a truy c?p "% đ?a Time" c?a LogicalDisk đ?i tư?ng. C?ng xem các "% t?ng s? th?i gian x? l?" s? lư?t truy c?p c?a h? th?ng đ?i tư?ng. Đ? xem thông tin hi?u năng đ?a h?p l?, b?n ph?i có trư?c đó bi?n trên các thi?t l?p Windows NT DISKPERF c?a vi?c ban hành "diskperf -Y" t? m?t d?u nh?c l?nh, và sau đó kh?i đ?ng l?i h? th?ng. Xem tài li?u Windows NT cho bi?t thêm chi ti?t.
  • Trong khi ch?y truy v?n, n?u đ? th? CPU là cao nh?t quán (cho Ví d?, l?n hơn 70 ph?n trăm), và giá tr? "% đ?a Time" là luôn th?p, đi?u này ch? ra m?t nhà nư?c CPU-ràng bu?c.
  • Trong khi ch?y truy v?n, n?u đ? th? CPU là luôn th?p (cho Ví d?, ít hơn 50 ph?n trăm), và "% đ?a Time" là m?t cách nh?t quán cao, đi?u này cho th?y m?t I/O ràng bu?c nhà nư?c.
  • So sánh đ? th? CPU v?i các thông tin th?ng kê IO.

K?t lu?n

SQL Server có kh? năng r?t cao hi?u su?t trên cơ s? d? li?u l?n. Đi?u này là đ?c bi?t là trư?ng h?p v?i SQL Server 6.0. Đ? đ?t đư?c hi?u su?t này ti?m năng, b?n ph?i s? d?ng cơ s? d? li?u hi?u qu?, ch? m?c, truy v?n, và ?ng d?ng thi?t k?. Các khu v?c này là các ?ng viên t?t nh?t cho vi?c thu th?p đáng k? c?i thi?n hi?u su?t. C? g?ng đ? làm cho m?i truy v?n như là hi?u qu? nh?t có th?, do đó khi đơn c?a b?n quy mô đ?n nhi?u ngư?i dùng, t?p th? multiuser t?i là supportable. Nghiên c?u v? hành vi ?ng d?ng khách hàng, truy v?n g?i b?i ?ng d?ng và th? nghi?m v?i ch? s? b?ng cách s? d?ng các nguyên t?c trong tài li?u này đư?c khuy?n khích m?nh m?. M?t phương pháp cách ti?p c?n trong vi?c phân tích v?n đ? hi?u su?t thư?ng s? mang l?i quan tr?ng c?i ti?n cho tương đ?i ít th?i gian đ?u tư.

Thu?c tính

ID c?a bài: 110352 - L?n xem xét sau cùng: 17 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
T? khóa: 
kbinfo kbother kbmt KB110352 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:110352
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài vi?t này nói v? các s?n ph?m mà Microsoft không c?n h? tr? n?a. Do đó, bài vi?t này đư?c cung c?p "nguyên b?n" và s? không đư?c c?p nh?t.

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com