SQL Server 7.0, SQL Server 2000 và SQL Server 2005 khai thác g? và các thu?t toán d? li?u lưu tr? m? r?ng đ? tin c?y d? li?u

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 230785 - 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

SQL Server 7.0, SQL Server 2000 và SQL Server 2005 cơ c?u l?i và thi?t k? l?i các thu?t toán khai thác g? và d? li?u t? trư?c đó b?n phát hành Microsoft SQL Server đ? c?i thi?n đ? tin c?y d? li?u và tính toàn v?n.

Đ? t?m hi?u thêm v? các khái ni?m ti?m ?n c?a các công c? SQL Server 7.0 và SQL Server 2000, xem "ARIES (thu?t toán đ? ph?c h?i và cô l?p Exploiting Semantics): m?t phương pháp giao d?ch Recovery h? tr? M?-Granularity Locking và m?t ph?n Rollbacks s? d?ng ghi-trư?c đăng nh?p", ACM giao d?ch trên h? th?ng cơ s? d? li?u. Tài li?u này đ? đư?c vi?t b?i Chunder Mohan.

Tài li?u này đ?a ch? các k? thu?t SQL Server 7.0, SQL Server 2000 và SQL Server 2005 đ? m? r?ng d? li?u đ? tin c?y và tính toàn v?n như liên quan đ?n th?t b?i.

Đó khuy?n cáo r?ng b?n đ?c các bài vi?t sau trong cơ s? ki?n th?c Microsoft đ? làm r? thêm vào b? nh? đ?m và thay th? các cu?c th?o lu?n th?t b?i ch? đ?:
86903 Mô t? c?a b? nh? đ?m b? đi?u khi?n đ?a trong SQL Server
46091 B?ng cách s? d?ng b? đi?u khi?n đ?a c?ng b? nh? đ?m v?i SQL Server
234656 B?ng cách s? d?ng ? đ?a b? nh? đ?m v?i SQL Server

THÔNG TIN THÊM

Trư?c khi b?t đ?u các cu?c th?o lu?n sâu, m?t s? đi?u kho?n như đư?c s? d?ng trong su?t bài vi?t này đư?c đ?nh ngh?a trong các ph?n sau đây.
Thu g?n b?ng nàyBung r?ng b?ng này
Thu?t ng?Định nghĩa
Pin h?u thu?nRiêng bi?t và b?n đ?a hóa pin d? ph?ng s? tr?c ti?p có s?n và ki?m soát b?i cơ ch? b? nh? đ?m đ? ngăn ng?a m?t d? li?u.
Chú ý Đi?u này không ph?i là m?t cung c?p năng lư?ng uninterruptible (UPS). M?t UPS không b?o đ?m b?t k? ho?t đ?ng ghi và có th? b? ng?t k?t n?i kh?i thi?t b? b? nh? đ?m.
Bộ đệm ẩnCơ ch? trung gian lưu tr? đư?c s? d?ng đ? t?i ưu hóa v?t l? I/O ho?t đ?ng và c?i thi?n hi?u su?t.
B?n trangTrang có s?a đ?i d? li?u mà v?n chưa đư?c flushed đ? lưu tr? ?n đ?nh. Cho bi?t thêm thông tin liên quan đ?n b? đ?m b?n trang, xem tài li?u SQL Server sách tr?c tuy?n.
Th?t b?iB?t c? đi?u g? có th? gây ra m?t Cúp b?t ng? c?a quá tr?nh SQL Server. Ví d?: power Cúp, đ?t l?i máy tính, b? nh? l?i, các v?n đ? ph?n c?ng, các l?nh v?c x?u, ? đ?a Cúp, OS th?t b?i, và vv.
Tuôn raBu?c m?t b? nh? cache đ?m đ? ?n đ?nh lưu tr?.
Ch?tĐ?ng b? hoá đ?i tư?ng đư?c s? d?ng đ? b?o v? v?t l? th?ng nh?t c?a m?t ngu?n tài nguyên.
Lưu tr? thayB?t k? cách nào đó v?n c?n s?n qua h? th?ng th?t b?i.
Đ? ghim trangTrang mà v?n c?n trong d? li?u b? nh? cache và không th? đư?c flushed đ? lưu tr? ?n đ?nh cho đ?n khi t?t c? các h? sơ liên k?t đăng nh?p đư?c b?o đ?m trong v? trí lưu tr? ?n đ?nh.
Lưu tr? ?n đ?nhTương t? như lưu tr? thay.
Lưu tr? d? bay hơiB?t k? cách nào mà s? không v?n c?n nguyên v?n trên toàn th?t b?i.
SQL Server 2005, SQL Server 2000, SQL Server 7.0, phiên b?n trư?c c?a SQL Server và nhi?u cơ s? d? li?u chính s?n ph?m trên th? trư?ng ngày nay s? d?ng giao th?c vi?t-trư?c đăng nh?p (WAL).

Giao th?c vi?t-trư?c đăng nh?p (WAL)

Giao th?c h?n là m?t cách tuy?t v?i đ? mô t? WAL. Nó là m?t c? th? và đư?c xác đ?nh t?p h?p các th?c hi?n các bư?c c?n thi?t đ? đ?m b?o d? li?u đư?c lưu tr? và trao đ?i đúng cách và có th? đư?c ph?c h?i vào m?t nhà nư?c đư?c bi?t đ?n trong trư?ng h?p c?a m?t s? th?t b?i. C?ng gi?ng như m?t m?ng ch?a m?t giao th?c đư?c xác đ?nh đ? trao đ?i d? li?u m?t cách nh?t quán và đư?c b?o v?, như v?y quá WAL hi?n mô t? các giao th?c đ? b?o v? d? li?u.

Tài li?u ARIES đ?nh ngh?a WAL như:
Giao th?c WAL kh?ng đ?nh r?ng các b?n ghi nh?t k? đ?i di?n cho nh?ng thay đ?i đ?n m?t s? d? li?u đ? ph?i lưu tr? ?n đ?nh trư?c khi d? li?u thay đ?i đư?c cho phép đ? thay th? phiên b?n trư?c c?a các d? li?u lưu tr? thay. Có ngh?a là, h? th?ng không đư?c cho phép đ? vi?t m?t trang C?p Nh?t lên phiên b?n thay lưu tr? trang cho đ?n khi ít ph?n hoàn tác các b?n ghi nh?t k? miêu t? các b?n c?p nh?t trang đ? đư?c vi?t đ? ?n đ?nh lưu tr?.
Đ? bi?t thêm chi ti?t v? đăng nh?p trư?c vi?t, xem tài li?u SQL Server sách tr?c tuy?n.

SQL Server và WAL

SQL Server 2005, SQL Server 2000, SQL Server 7.0, và trư?c đó SQL Server chí s? d?ng giao th?c WAL. Đ? đ?m b?o đúng committal c?a m?t giao d?ch, t?t c? h? sơ đăng nh?p liên k?t v?i các giao d?ch ph?i đư?c b?o m?t trong lưu tr? ?n đ?nh.

Đ? làm r? đi?u này, h?y xem xét ví d? c? th? sau (cho ví d? này gi? đ?nh r?ng không có ch? m?c và trang b? ?nh hư?ng trang 150).
BEGIN TRANSACTION
   INSERT INTO tblTest VALUES (1)
COMMIT TRANSACTION
				
Bây gi? phá v? các ho?t đ?ng xu?ng thành các bư?c đơn gi?n đăng nh?p:
Thu g?n b?ng nàyBung r?ng b?ng này
Tuyên b?Hành đ?ng th?c hi?n
B?T Đ?U GIAO D?CHGhi vào khu v?c b? nh? cache đăng nh?p nhưng có là không c?n đ? tuôn ra đ? lưu tr? ?n đ?nh, b?i v? các máy ch? SQL đ? không th?c hi?n b?t k? thay đ?i v?t l?.
CHÈN vào tblTest1. D? li?u trang 150 truy c?p vào b? nh? cache d? li?u SQL Server, n?u không đ? có s?n.

2. Trang là latched, pinned, và đánh d?u b?n, và thích h?p ? khóa đư?c thu đư?c.

3. B?n ghi nh?t k? chèn xây d?ng và b? sung vào b? nh? cache đăng nh?p.

4. Hàng m?i đư?c thêm vào trang d? li?u.

5. Ch?t đư?c phát hành.

6. Các h? sơ đăng nh?p liên k?t v?i các giao d?ch ho?c trang không c?n đư?c đ? ?ng vào th?i đi?m này b?i v? t?t c? thay đ?i v?n c?n trong lưu tr? d? bay hơi.
CAM K?T GIAO D?CH1. M?t b?n ghi nh?t k? cam k?t đư?c h?nh thành và các h? sơ đăng nh?p liên k?t v?i các giao d?ch ph?i đư?c ghi vào ?n đ?nh lưu tr?. Giao d?ch không đư?c xem là cam k?t cho đ?n khi các b?n ghi s? ghi chính xác đư?c ch? đ?nh đ? lưu tr? ?n đ?nh.

2. Data trang 150 v?n c?n trong b? nh? cache d? li?u SQL Server và không ngay l?p t?c đ? ?ng vào lưu tr? ?n đ?nh. Khi h? sơ đăng nh?p là đúng cách b?o đ?m ph?c h?i có th? làm l?i thao tác n?u c?n thi?t.

3. Giao d?ch ? khóa đư?c phát hành.
Không nên nh?m l?n v?i khóa và đăng nh?p. M?c dù quan tr?ng, khóa và khai thác g? là v?n đ? riêng bi?t khi giao d?ch v?i WAL. Trong ví d? trên, SQL Server 7.0, SQL Server 2000 và SQL Server 2005 thư?ng gi? ch?t trên trang 150 cho th?i gian c?n thi?t đ? th?c hi?n nh?ng thay đ?i v?t l? chèn vào trang, không ph?i trong su?t th?i gian c?a giao d?ch. Lo?i thích h?p khóa đư?c thành l?p đ? b?o v? hàng, ph?m vi, trang ho?c b?ng khi c?n thi?t. Tham kh?o các ph?n khóa SQL Server sách tr?c tuy?n cho bi?t thêm chi ti?t v? khóa lo?i.

Xem xét ví d? chi ti?t hơn, b?n có th? yêu c?u nh?ng g? s? x?y ra khi các LazyWriter ho?c tr?m ki?m soát quá tr?nh th?c hi?n. SQL Server 7.0, SQL Server 2000 và SQL Server 2005 v?n đ? t?t c? flushes thích h?p đ? ?n đ?nh lưu tr? cho h? sơ đăng nh?p giao d?ch liên k?t v?i trang b?n và pinned. Đi?u này đ?m b?o giao th?c WAL m?t trang d? li?u không bao gi? có th? đư?c ghi vào ?n đ?nh lưu tr? cho đ?n khi các h? sơ liên quan đ?n giao d?ch đăng đ? đư?c đ? ?ng.

Lưu tr? SQL Server và ?n đ?nh

SQL Server 7.0, SQL Server 2000 và SQL Server 2005 tăng cư?ng ho?t đ?ng trang đăng nh?p và d? li?u b?ng cách bao g?m các ki?n th?c v? kích thư?c ngành đ?a (thư?ng 512 byte).

Đ? duy tr? các tính ch?t AXÍT c?a m?t giao d?ch, SQL Server ph?i chi?m đi?m th?t b?i. Trong m?t s? th?t b?i nhi?u ? đ?a thông s? k? thu?t ch? đ?m b?o m?t s? lư?ng h?n ch? c?a ngành vi?t ho?t đ?ng. Thông s? k? thu?t nh?t đ?m b?o hoàn thành đơn ngành vi?t khi m?t l?i x?y ra.

SQL Server 7.0, SQL Server 2000 và SQL Server 2005 s? d?ng 8-KB d? li?u các trang và đăng nh?p (n?u đ? ?ng) trên b?i s? c?a kích thư?c ngành. (H?u h?t ? đ?a s? d?ng 512 byte như là m?c đ?nh khu v?c kinh t? kích thư?c.) Trong trư?ng h?p c?a m?t s? th?t b?i, SQL Server có th? chi?m vi?t ho?t đ?ng l?n hơn so v?i m?t khu v?c kinh t? b?ng cách s? d?ng đăng nh?p tương đương và rách vi?t k? thu?t.

Rách nát trang phát hi?n

Các ph?n sau đây đ?n t? các SQL Server 7.0 sách Online mô t? rách trang phát hi?n:
Tùy ch?n này cho phép SQL Server đ? phát hi?n các ho?t đ?ng I/O không đ?y đ? do s?c m?nh th?t b?i ho?c khác Cúp h? th?ng. Khi đúng, nó gây ra m?t chút đ? đư?c l?n cho m?i l?nh v?c 512 byte trong m?t 8-kilobyte (KB) cơ s? d? li?u trang b?t c? khi nào trang đư?c vi?t vào đ?a. N?u m?t chút bang sai khi trang là sau đó đ?c b?i SQL Server, sau đó trang đư?c vi?t không chính xác; m?t trang rách nát đư?c phát hi?n. Rách nát trang thư?ng đư?c phát hi?n trong th?i gian ph?c h?i v? b?t k? trang nào đư?c vi?t không chính xác có th? đư?c đ?c b?i ph?c h?i.

M?c dù SQL Server cơ s? d? li?u các trang 8 KB, đ?a th?c hi?n I/O ho?t đ?ng b?ng cách s? d?ng m?t l?nh v?c 512 byte. V? v?y, l?nh v?c 16 đư?c vi?t trên m?t cơ s? d? li?u trang. M?t trang rách có th? x?y ra n?u h? th?ng không (ví d?, do s?c m?nh th?t b?i) gi?a th?i gian h? đi?u hành vi?t các l?nh v?c 512 byte đ?u tiên vào đ?a và hoàn thành các ho?t đ?ng 8 KB I/O. N?u khu v?c kinh t? đ?u tiên c?a m?t cơ s? d? li?u trang thành công b?ng văn b?n trư?c khi s? th?t b?i, trang cơ s? d? li?u trên đ?a s? xu?t hi?n khi C?p Nh?t, m?c dù nó không có th? đ? thành công.

B?ng cách s? d?ng pin h?u thu?n đ?a b? đi?u khi?n lưu tr? có th? đ?m b?o r?ng d? li?u đư?c ghi thành công vào đ?a ho?c không đư?c vi?t ? t?t c?. Trong trư?ng h?p này, không đ?t rách trang phát hi?n đ? đúng, cho nó là không c?n thi?t.
Chú ý Rách nát trang phát hi?n chưa đư?c kích ho?t theo m?c đ?nh trong SQL Server 7.0. Xem sp_dboption làm th? nào đ? kích ho?t tính năng phát hi?n trên h? th?ng c?a b?n.

Đăng nh?p tương đương

Ki?m tra tính ch?n l? đăng nh?p là r?t tương t? như phát hi?n rách trang. M?i l?nh v?c 512 byte có tính ch?n l? bit. Nh?ng bit ch?n l? luôn luôn b?ng văn b?n v?i h? sơ đăng nh?p và đánh giá khi h? sơ đăng nh?p l?y. B?ng cách bu?c đăng nh?p vi?t trên m?t ranh gi?i 512 byte, SQL Server 7.0, SQL Server 2000 và SQL Server 2005 có th? đ?m b?o r?ng committal ho?t đ?ng hoàn toàn đư?c vi?t đ? các l?nh v?c v?t l? đ?a.

Nh?ng thay đ?i cung c?p nh?t quán tăng d? li?u, ngay c? trên các phiên b?n trư?c c?a SQL Server.

Các phiên b?n c?a SQL Server s?m hơn 7,0

Các phiên b?n c?a SQL Server trư?c đó hơn 7,0 đ? không cung c?p đăng nh?p tương đương ho?c rách chút phát hi?n các cơ s?. Trong th?c t?, nh?ng phiên b?n có th? vi?t cùng m?t trang đăng nh?p nhi?u l?n cho đ?n khi đi?n vào các h? sơ đăng nh?p trang đăng nh?p 2-KB. Đi?u này có th? làm l? các giao d?ch thành công đ? cam k?t. Vi?t n?u trang đăng nh?p đang đư?c vi?t l?i trong m?t th?t b?i, m?t l?nh v?c v?i các giao d?ch cam k?t có th? không nh?n đư?c l?i đúng cách.

Tác đ?ng hi?u su?t

T?t c? các phiên b?n c?a SQL Server m? các t?p tin đăng nh?p và d? li?u b?ng cách s? d?ng Win32 CreateFile ch?c năng. Các dwFlagsAndAttributes thành viên bao g?m các FILE_FLAG_WRITE_THROUGH tùy ch?n khi m? ra b?i SQL Server.
FILE_FLAG_WRITE_THROUGH
Ch? th? cho h? th?ng vi?t thông qua b?t k? b? nh? cache trung gian và đi tr?c ti?p vào đ?a. H? th?ng v?n có th? nh? cache vi?t ho?t đ?ng, nhưng không th? lazily tuôn ra chúng.

Tùy ch?n FILE_FLAG_WRITE_THROUGH đ?m b?o r?ng khi m?t vi?t chi?n d?ch tr? v? hoàn thành các d? li?u đư?c lưu tr? m?t cách chính xác trong lưu tr? ?n đ?nh. Đi?u này g?n v?i giao th?c WAL đ?m b?o d? li?u.
Nhi?u ? đ?a (SCSI và IDE) ch?a trên tàu cache 512 KB, 1 MB, ho?c l?n hơn. Tuy nhiên, cache ? đ?a thư?ng d?a vào m?t t? đi?n và gi?i không m?t pin ?ng h? Pháp. Các b? nh? đ?m cơ ch? không th? đ?m b?o vi?t trên m?t quy?n l?c chu k? ho?c th?t b?i tương t? như đi?m. H? ch? đ?m b?o hoàn thành các ho?t đ?ng ghi khu v?c kinh t?. Đi?u này đ?c bi?t là t?i sao rách vi?t và đăng nh?p tương đương phát hi?n đ? đư?c ch? t?o thành SQL Server 7.0, SQL Server 2000 và SQL Server 2005. Như các ? đ?a ti?p t?c phát tri?n trong kích thư?c, các cache tr? thành l?n hơn, và h? có th? phơi bày m?t lư?ng l?n d? li?u trong m?t th?t b?i.

Nhi?u nhà cung c?p ph?n c?ng cung c?p các gi?i pháp đi?u khi?n pin h?u thu?n đ?a. Các b? đi?u khi?n lưu tr? có th? duy tr? d? li?u trong b? nh? cache trong nhi?u ngày và th?m chí cho phép ph?n c?ng b? nh? đ?m đư?c đ?t trong m?t máy tính th? hai. Khi quy?n l?c là đúng cách ph?c h?i, d? li?u unwritten hoàn toàn đ? ?ng trư?c khi truy c?p d? li?u thêm đư?c cho phép. Nhi?u ngư?i trong s? h? cho phép m?t t? l? ph?n trăm c?a đ?c so v?i ghi nh? cache đ? đư?c thành l?p cho hi?u su?t t?i ưu. M?t s? ch?a l?n b? nh? lưu tr? khu v?c. Trong th?c t?, đ?i v?i m?t phân đo?n r?t c? th? c?a th? trư?ng, m?t s? nhà cung c?p ph?n c?ng cung c?p cao c?p pin h?u thu?n đ?a b? nh? đ?m b? đi?u khi?n h? th?ng v?i 6 GB c?a b? nh? cache. Đây có th? c?i thi?n đáng k? hi?u su?t cơ s? d? li?u.

Nâng cao vi?c tri?n khai b? nh? đ?m s? x? l? các FILE_FLAG_WRITE_THROUGH yêu c?u b?ng cách không ph?i vô hi?u hóa b? nh? cache c?a b? đi?u khi?n b?i v? h? có th? cung c?p kh? năng vi?t l?i đúng trong trư?ng h?p c?a m?t thi?t l?p l?i h? th?ng, quy?n l?c th?t b?i ho?c khác đi?m th?t b?i.

I/O chuy?n không s? d?ng m?t b? nh? cache có th? là đáng k? hơn do đ? cơ khí th?i gian c?n thi?t đ? di chuy?n th? trư?ng ? đ?a, t? l? quay và các y?u t? h?n ch? khác.

L?nh v?c đ?t hàng

M?t k? thu?t ph? bi?n đư?c s? d?ng đ? tăng hi?u năng I/O là l?nh v?c đ?t hàng. Đ? tránh phong trào đ?u cơ khí yêu c?u đ?c/ghi đư?c s?p x?p, cho phép m?t chuy?n đ?ng nh?t quán hơn c?a ngư?i đ?ng đ?u đ? truy xu?t ho?c lưu tr? d? li?u.

B? nh? cache có th? ch?a nhi?u đăng nh?p và d? li?u vi?t yêu c?u cùng m?t lúc. Giao th?c WAL và SQL Server th?c hi?n giao th?c WAL yêu c?u đ? b?ng c?a Nh?t k? ghi lưu tr? ?n đ?nh trư?c khi vi?t trang có th? đư?c ban hành. Tuy nhiên, s? d?ng b? nh? cache có th? tr? thành công t? m?t yêu c?u ghi nh?t k? mà không có d? li?u đang đư?c ghi vào ? đ?a th?c t? (có ngh?a là, b?ng văn b?n đ? ?n đ?nh lưu tr?). Đi?u này có th? d?n đ?n máy ch? SQL phát hành các yêu c?u vi?t trang d? li?u.

V?i s? tham gia vi?t b? nh? cache, d? li?u v?n đư?c coi là trong lưu tr? d? bay hơi. Tuy nhiên, t? Win32 API WriteFile cu?c g?i, chính xác như th? nào SQL Server th?y ho?t đ?ng, m?t m? tr? thành công nh?n đư?c. SQL Server hay b?t k? quá tr?nh b?ng cách s? d?ng các WriteFile API cu?c g?i ch? có th? suy ra các d? li?u m?t cách chính xác đ? thu đư?c lưu tr? ?n đ?nh.

Cho các m?c đích th?o lu?n, gi? đ?nh r?ng t?t c? các ngành c?a trang d? li?u đư?c s?p x?p đ? vi?t trư?c khi các l?nh v?c c?a các h? sơ đăng nh?p phù h?p. Đi?u này ngay l?p t?c vi ph?m giao th?c WAL. B? nh? cache vi?t m?t trang d? li?u trư?c khi h? sơ đăng nh?p. Tr? khi b? nh? cache đ?y đ? pin h?u thu?n, m?t s? th?t b?i có th? gây ra k?t qu? th?m kh?c.

Khi đánh giá các y?u t? hi?u su?t t?i ưu cho m?t máy ch? cơ s? d? li?u, có r?t nhi?u y?u t? đ? xem xét. Nh?ng cân nh?c quan tr?ng nh?t là "Hi?n cho h? th?ng c?a tôi phép h?p l? kh? năng FILE_FLAG_WRITE_THROUGH?"

Chú ý B?t k? b? nh? cache b?n đang s? d?ng phải h? tr? đ?y đ? m?t gi?i pháp pin ?ng h?. T?t c? các cơ ch? b? nh? đ?m là nghi ng? đ?n d? li?u tham nh?ng và m?t d? li?u. SQL Server làm cho m?i n? l?c đ? đ?m b?o WAL b?ng cách cho phép FILE_FLAG_WRITE_THROUGH.

Th? nghi?m đ? cho th?y r?ng nhi?u c?u h?nh ? đ?a có th? ch?a vi?t b? nh? đ?m mà không thích h?p pin d? ph?ng. ? đ?a SCSI, IDE và EIDE t?n d?ng vi?t cache.

Trong nhi?u c?u h?nh, cách duy nh?t đ? đúng cách vô hi?u hóa b? nh? đ?m vi?t m?t ? đ?a IDE ho?c EIDE là v?i m?t ti?n ích nhà s?n xu?t c? th? b?ng cách s? d?ng jumper n?m trên ? đ?a đó. Đ? đ?m b?o r?ng b? nh? cache vi?t vô hi?u hoá cho các ? đ?a đó, liên h? v?i nhà s?n xu?t ? đ?a.

? đ?a SCSI c?ng có vi?t cache, nhưng các cache thư?ng có th? đư?c vô hi?u hóa b?i h? đi?u hành. N?u có b?t k? câu h?i, liên h? v?i nhà s?n xu?t ? đ?a đ? ti?n ích thích h?p.

Ghi nh? Cache x?p ch?ng

Ghi nh? Cache Stacking là tương t? như l?nh v?c đ?t hàng. Đ?nh ngh?a sau đây đư?c l?y tr?c ti?p t? m?t hàng đ?u IDE ? nhà s?n xu?t trang Web:
B?nh thư?ng, ch? đ? này là ho?t đ?ng. Ghi nh? cache ch? đ? ch?p nh?n ch? nhà vi?t d? li?u vào b? đ?m cho đ?n khi các b? đ?m là đ?y đ? ho?c chuy?n giao máy ch? là hoàn thành.

M?t nhi?m v? ghi đ?a b?t đ?u lưu tr? d? li?u máy ch? lưu tr? vào đ?a. Máy ch? lưu tr? ghi l?nh ti?p t?c đư?c ch?p nh?n và d? li?u đư?c chuy?n đ?n b? đ?m cho đ?n khi m?t trong hai ngăn x?p l?nh ghi đ?y đ? ho?c b? đ?m d? li?u đư?c đ?y đ?. Các ? đ?a có th? s?p x?p l?i ghi l?nh đ? t?i ưu hóa thông lư?ng ? đ?a.

T? đ?ng ghi Reallocation (AWR)

K? thu?t thư?ng đư?c s? d?ng đ? b?o v? d? li?u là đ? phát hi?n các l?nh v?c x?u trong thao tác d? li?u. Nh?ng l?i gi?i thích sau đây đ?n t? cùng m?t hàng đ?u IDE ? nhà s?n xu?t trang Web:
Tính năng này là m?t ph?n c?a b? nh? cache vi?t và làm gi?m nguy cơ m?t d? li?u trong các chi?n d?ch tr? ch?m ghi. N?u x?y ra m?t l?i đ?a trong quá tr?nh ghi đ?a, đi?m d?ng tác v? đ?a và khu v?c nghi ng? đư?c reallocated vào m?t h? bơi c?a các l?nh v?c khác n?m ? ph?n cu?i c?a ? đ?a. Sau reallocation, nhi?m v? ghi đ?a ti?p t?c cho đ?n khi nó đư?c hoàn t?t.
Đi?u này có th? là m?t tính năng r?t m?nh n?u pin d? ph?ng cung c?p cho b? nh? cache, cho phép s?a đ?i thích h?p khi kh?i đ?ng l?i. Nó là m?t l?i th? đ? phát hi?n l?i đ?a, nhưng b?o m?t d? li?u c?a giao th?c WAL s? m?t l?n n?a yêu c?u này ph?i đư?c th?c hi?n th?i gian th?c và không theo m?t cách tr? ch?m. Trong các tham s? WAL, k? thu?t AWR không th? tài kho?n cho m?t t?nh h?nh nơi vi?t Nh?t k? không do m?t l?i ngành nhưng ? đ?a b? đ?y. Cơ s? d? li?u ngay l?p t?c ph?i bi?t v? s? th?t b?i đ? giao d?ch có th? đư?c h?y đúng cách b?, các qu?n tr? viên có th? đư?c c?nh báo, và thích h?p bư?c th?c hi?n đ? b?o m?t các d? li?u và kh?c ph?c t?nh h?nh s? th?t b?i c?a phương ti?n truy?n thông.

An toàn d? li?u

Có r?t nhi?u bi?n pháp ph?ng ng?a m?t qu?n tr? cơ s? d? li?u nên dùng đ? đ?m b?o s? an toàn c?a d? li?u.
  • Nó luôn luôn là m?t ? tư?ng t?t đ? đ?m b?o r?ng chi?n lư?c d? ph?ng c?a b?n là đ? đ? ph?c h?i t? m?t s? th?t b?i th?m h?a. Lưu tr? Offsite và các bi?n pháp ph?ng ng?a là thích h?p.
  • Ki?m tra các thao tác khôi ph?c cơ s? d? li?u trong m?t trung h?c ho?c cơ s? d? li?u th? nghi?m trên cơ s? thư?ng xuyên.
  • Đ?m b?o r?ng b?t k? thi?t b? b? nh? đ?m có th? x? l? t?t c? các t?nh hu?ng th?t b?i (cúp đi?n, các l?nh v?c x?u, ? đ?a x?u, h? th?ng Cúp, lockups, quy?n l?c cành và vv).
  • Đ?m b?o r?ng thi?t b? b? nh? đ?m c?a b?n:
    • Đ? tích h?p pin d? ph?ng.
    • Có th? phát hành l?i vi?t trên đi?n.
    • Có th? đư?c hoàn toàn vô hi?u n?u c?n thi?t.
    • X? l? các khu v?c kinh t? x?u re-mapping th?i gian th?c.
  • Kích ho?t tính năng rách trang phát hi?n; đô th? này có ít tác đ?ng đ?n hi?u su?t.
  • C?u h?nh ? đ?a RAID cho phép cho m?t vùng trao đ?i nóng c?a m?t ? đ?a x?u, n?u có th?.
  • S? d?ng b? đi?u khi?n b? nh? đ?m m?i hơn cho phép b? sung thêm không gian đ?a mà không c?n kh?i đ?ng l?i h? đi?u hành. Đi?u này có th? là m?t gi?i pháp l? tư?ng.

Ki?m tra ? đ?a

Đ? hoàn toàn an toàn d? li?u c?a b?n, b?n nên đ?m b?o r?ng t?t c? các d? li?u b? nh? đ?m đư?c x? l? đúng cách. Trong nhi?u t?nh hu?ng, đi?u này có ngh?a là b?n ph?i vô hi?u hóa b? nh? đ?m vi?t ? đ?a.

Chú ý Đ?m b?o r?ng m?t cơ ch? b? nh? đ?m thay th? đúng cách có th? x? l? nhi?u lo?i c?a s? th?t b?i.

Microsoft đ? th?c hi?n th? nghi?m trên m?t s? ? đ?a SCSI và IDE b?ng cách s? d?ng các SQLIOStress Ti?n ích. Ti?n ích này mô ph?ng n?ng không đ?ng b? đ?c/vi?t ho?t đ?ng m?t thi?t b? mô ph?ng d? li?u và thi?t b? đăng nh?p. Th?ng kê hi?u su?t th? nghi?m cho th?y các ho?t đ?ng trung b?nh là vi?t cho m?i th? hai gi?a 50 và 70 cho m?t ? đ?a v?i khuy?t t?t vi?t b? nh? đ?m và m?t lo?t các v?ng/phút gi?a 5.200 và 7,200.

Đ? bi?t thêm thông tin và chi ti?t v? các SQLIOStress Ti?n ích, xem bài vi?t sau trong cơ s? ki?n th?c Microsoft:
231619 Làm th? nào đ? s? d?ng ti?n ích SQLIOStress đ? căng th?ng h? th?ng ph? đ?a như SQL Server
Nhi?u nhà s?n xu?t PC (ví d?, Compaq, Dell, Gateway, HP, vv.) đ?t các ? đ?a v?i b? nh? cache vi?t t?t. Tuy nhiên, th? nghi?m cho th?y r?ng đi?u này có th? không luôn luôn là các trư?ng h?p như v?y luôn luôn ki?m tra hoàn toàn.

Thi?t b? d? li?u

Trong t?t c?, nhưng không-đăng nh?ng t?nh hu?ng, SQL Server s? yêu c?u ch? là các h? sơ đăng nh?p đ? đư?c flushed. Khi th?c hi?n các ho?t đ?ng không đăng nh?p, các trang d? li?u c?ng ph?i đư?c flushed đ? lưu tr? ?n đ?nh; không có h? sơ cá nhân đăng nh?p đ? t?o l?i các hành đ?ng trong trư?ng h?p c?a m?t s? th?t b?i.

Các trang d? li?u có th? v?n c?n trong b? nh? cache cho đ?n khi quá tr?nh LazyWriter ho?c tr?m ki?m soát flushes chúng đ? lưu tr? ?n đ?nh. S? d?ng giao th?c WAL đ? đ?m b?o r?ng các h? sơ đăng nh?p đư?c lưu tr? đúng cách b?o đ?m r?ng ph?c h?i có th? ph?c h?i m?t trang d? li?u đ?n m?t nhà nư?c đư?c bi?t đ?n.

Đi?u này không có ngh?a r?ng nó đư?c khuy?n khích đ? đ?t t?p tin d? li?u trên m?t ? đ?a lưu tr?. Khi máy ch? SQL flushes trong trang d? li?u đ? ?n đ?nh lưu tr?, các b?n ghi nh?t k? có th? đư?c c?t ng?n t? các b?n ghi c?a giao d?ch. N?u các trang d? li?u đư?c lưu tr? vào b? nh? cache d? bay hơi, nó có th? truncate h? sơ đăng nh?p s? đư?c s? d?ng đ? khôi ph?c l?i m?t trang trong trư?ng h?p c?a m?t s? th?t b?i. Đ?m b?o r?ng các thi?t b? c? d? li?u c?a b?n và đăng nh?p ch?a ?n đ?nh lưu tr? đúng cách.

Tăng hi?u su?t

Câu h?i đ?u tiên mà phát sinh là: "tôi có m?t ? đ?a IDE b? nh? đ?m, nhưng khi tôi t?t nó, hi?u su?t c?a tôi tr? ít hơn đáng k? so v?i d? ki?n - t?i sao?"

Nhi?u ngư?i trong s? các ? đ?a IDE th? nghi?m c?a Microsoft ch?y ? m?c 5.200 v?ng/phút, và SCSI ? đ?a t?i m?t RPM 7.200. Có khi b?n không th? ghi b? nh? đ?m c?a ? đ?a IDE hi?u su?t cơ th? tr? thành m?t y?u t?.

Đó là m?t khu v?c r?t r? ràng đ? gi?i quy?t s? khác bi?t hi?u su?t: "Đ?a ch? giao d?ch l?."

Có r?t nhi?u x? l? h? th?ng (OLTP) mà yêu c?u m?t t? l? cao giao d?ch giao d?ch tr?c tuy?n. Đ?i v?i các h? th?ng này, xem xét vi?c s? d?ng m?t b? đi?u khi?n b? nh? đ?m có th? đúng cách h? tr? m?t b? nh? cache vi?t và cung c?p tăng hi?u su?t đ?ng th?i đ?m b?o tính toàn v?n d? li?u.

Đáng k? g?p ph?i thay đ?i hi?u su?t v?i SQL Server trên m?t ? đ?a b? nh? đ?m, t? l? giao d?ch đư?c tăng lên b?ng cách s? d?ng các giao d?ch nh?.

Th? nghi?m cho th?y r?ng ho?t đ?ng cao vi?t c?a b? đ?m nh? hơn so v?i 512 KB ho?c cao hơn 2 MB có th? gây ra hi?u su?t ch?m.
H?y xem xét ví d? sau:
CREATE TABLE tblTest ( iID int IDENTITY(1,1), strData char(10))
GO

SET NOCOUNT ON
GO

INSERT INTO tblTest VALUES ('Test')
WHILE @@IDENTITY < 10000
   INSERT INTO tblTest VALUES ('Test')
				
Sau đây là k?t qu? th? nghi?m m?u cho SQL Server:
SCSI(7200 RPM) 84 giây
SCSI(7200 RPM) 15 giây (b? đi?u khi?n b? đ?m ?n)

IDE(5200 RPM) 14 giây (? nh? cache đư?c kích ho?t)
IDE(5200 RPM) 160 giây
Gói toàn b? chu?i c?a CHÈN các ho?t đ?ng trong m?t giao d?ch duy nh?t ch?y trong kho?ng 4 giây trong t?t c? các c?u h?nh.

L? do là s? đăng nh?p flushes yêu c?u. N?u không có giao d?ch, m?i CHÈN là m?t giao d?ch trong và c?a chính nó, và m?i khi h? sơ đăng nh?p cho các giao d?ch ph?i đư?c flushed. Tuôn ra m?i là 512 byte kích thư?c, mà đ?i h?i s? can thi?p đáng k? cơ khí ?.

Khi m?t giao d?ch duy nh?t đư?c s? d?ng, các h? sơ đăng nh?p cho các giao d?ch có th? đư?c kèm và vi?t duy nh?t, l?n hơn có th? đư?c s? d?ng đ? tuôn ra các h? sơ đăng nh?p thu th?p đư?c. S? can thi?p cơ khí gi?m đáng k?.

C?nh báo Không nên b?n tăng ph?m vi giao d?ch c?a b?n. Dài ch?y các giao d?ch có th? d?n đ?n quá nhi?u và không mong mu?n ch?n c?ng như tăng lên trên không. S? d?ng các qu?y hi?u su?t SQL Server 7.0, SQL Server 2000 và SQL Server 2005 SQL Server: cơ s? d? li?u đ? xem các qu?y giao d?ch d?a trên đăng nh?p. C? th?, Đăng nh?p byte đ? ?ng/sec có th? ch? ra nhi?u giao d?ch nh? d?n t?i ho?t đ?ng đ?a cao cơ khí.

Nh?n vào nh?ng đi?u kho?n liên quan đ?n vi?c đăng nh?p tuôn ra và xác đ?nh n?u s? đăng nh?p flushes có th? đư?c gi?m b?t. Trong ví d? trên, m?t giao d?ch duy nh?t đư?c th?c hi?n. Tuy nhiên, trong nhi?u t?nh hu?ng, đi?u này có th? d?n đ?n hành vi không mong mu?n c?a khóa. Nh?n vào thi?t k? c?a giao d?ch. Đi?u g? có l? đó như sau đây đ? th?c hi?n đ?t đ? gi?m các đăng nh?p thư?ng xuyên và nh? tuôn ra ho?t đ?ng:
BEGIN TRAN
GO

INSERT INTO tblTest VALUES ('Test')
WHILE @@IDENTITY < 50
BEGIN
   INSERT INTO tblTest VALUES ('Test')

   if(0 = cast(@@IDENTITY as int) % 10)
   BEGIN
      PRINT 'Commit tran batch'
      COMMIT TRAN
      BEGIN TRAN
   END
END
GO

COMMIT TRAN
GO
				
SQL Server 6.x có th? không th?y tác đ?ng hi?u su?t tương t? t? thư?ng xuyên và nh? giao d?ch đăng nh?p vi?t. SQL Server 6.x thi trang 2-KB đăng nh?p tương t? như các giao d?ch đư?c cam k?t. Đi?u này có th? làm gi?m kích thư?c c?a Nh?t k? đáng k? so v?i 512-byte l?nh v?c ranh gi?i flushes trong SQL Server 7.0, SQL Server 2000 và SQL Server 2005. Vi?c gi?m kích thư?c c?a các b?n ghi tr?c ti?p liên quan đ?n s? lư?ng lái xe cơ khí ho?t đ?ng. Tuy nhiên, như gi?i thích ? trên, SQL Server 6.x thu?t toán có th? phơi bày các giao d?ch cam k?t.
SQL máy ch? yêu c?u h? th?ng h? tr? 'b?o đ?m giao hàng đ? phương ti?n truy?n thông ?n đ?nh' như đư?c nêu trong chương tr?nh Microsoft SQL Server Always-On lưu tr? gi?i pháp Review. FoĐ? bi?t thêm chi ti?t v? các yêu c?u đ?u vào và đ?u ra cho cơ s? d? li?u SQL Server, nh?p vào s? bài vi?t sau đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
967576Microsoft SQL Server cơ s? d? li?u công c? đ?u vào/đ?u ra yêu c?u

Thu?c tính

ID c?a bài: 230785 - L?n xem xét sau cùng: 21 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Standard
T? khóa: 
kbhowto kbinfo kbmt KB230785 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:230785

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