Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Bộ đệm đệm:Nó là gì và nó ảnh hưởng như thế nào đến hiệu suất cơ sở dữ liệu?

Trong SQL Server, bộ đệm đệm là bộ nhớ cho phép bạn truy vấn dữ liệu được truy cập thường xuyên một cách nhanh chóng. Khi dữ liệu được ghi vào hoặc đọc từ cơ sở dữ liệu SQL Server, trình quản lý bộ đệm sẽ sao chép nó vào bộ đệm ẩn bộ đệm (hay còn gọi là vùng đệm). Khi đầy, các trang dữ liệu cũ hơn hoặc ít được sử dụng hơn sẽ được chuyển vào đĩa cứng.

Tại sao tôi cần theo dõi bộ đệm đệm?

Việc sử dụng bộ nhớ có thể có tác động đáng kể đến hiệu suất. Khi không đủ bộ nhớ, các trang dữ liệu thường xuyên bị xóa khỏi bộ đệm đệm. Điều này làm chậm các truy vấn vì SQL Server phải truy cập vào đĩa để tìm trang dữ liệu, khôi phục nó vào bộ đệm đệm, sau đó đọc trang trước khi nó có thể trả về kết quả truy vấn.

Có nhiều lý do khiến các truy vấn bắt đầu chạy chậm. Nhưng nếu bạn muốn loại trừ sự cố bộ nhớ, hãy xem những gì đang diễn ra bên trong bộ đệm đệm. Nhìn vào bên trong nó sẽ xác định cơ sở dữ liệu, bảng hoặc chỉ mục nào đang làm hỏng bộ nhớ và gây áp lực lên bộ đệm.

Để xem cơ sở dữ liệu nào sử dụng nhiều bộ nhớ nhất, hãy sử dụng truy vấn:

 SELECTCASE database_idWHEN 32767 THÌ 'ResourceDb'ELSE db_name (database_id) HẾT AS database_name, COUNT (1) / 128 AS megabyte_in_cacheFROM sys.dm_os_buffer_descriptorsGROUP BY DB_NAME (database_id), database_idORDER BY megabyte_in_c 

Để xác định bảng hoặc chỉ mục tiêu tốn nhiều bộ nhớ nhất, hãy chạy truy vấn này trong cơ sở dữ liệu mà bạn muốn kiểm tra:

 SELECT COUNT (1) / 128 AS megabyte_in_cache, name, index_idFROM sys.dm_os_buffer_descriptors AS bdINNER JOIN (SELECT object_name (object_id) AS name, index_id, Delivery_unit_idFROM sys.allocation_units AS auINNER JOIN sys.partitions AS p .hobt_idAND (au.type =1 OR au.type =3) UNION ALLSELECT object_name (object_id) AS name, index_id, delivery_unit_idFROM sys.allocation_units AS auINNER THAM GIA sys.partitions AS pON au.container_id =p.partition_idAND au.type =2 ) AS objON bd.allocation_unit_id =obj.allocation_unit_idWHERE database_id =DB_ID () GROUP BY name, index_idORDER BY megabytes_in_cache DESC; 

Quản lý bộ nhớ bằng các chỉ số

Mặc dù việc kiểm tra tại chỗ các cơ sở dữ liệu và chỉ mục để sử dụng quá mức bộ nhớ rất hữu ích, việc theo dõi các chỉ số bộ nhớ đệm trong bộ đệm thực sự là cách tốt nhất để xác định và giải quyết các vấn đề về hiệu suất do áp lực nội bộ lên bộ nhớ.

Dưới đây là năm chỉ số hàng đầu cần theo dõi để cải thiện các vấn đề về hiệu suất liên quan đến bộ nhớ:

1. Tỷ lệ truy cập bộ nhớ đệm trong bộ nhớ đệm

  • Số liệu này cho biết cách SQL Server sử dụng bộ đệm đệm
  • Tỷ lệ lần truy cập xác định phần trăm yêu cầu trang đã được các trang dữ liệu hoàn thành từ bộ đệm ẩn so với tất cả các yêu cầu trang dữ liệu
  • Các trang không được tìm thấy trong bộ đệm ẩn được đọc từ đĩa, tốc độ này chậm hơn nhiều
  • Tỷ lệ bộ đệm đệm lý tưởng là 100 (tức là Máy chủ SQL đọc tất cả các trang từ bộ đệm đệm và không có trang nào từ đĩa)
  • Giá trị bộ đệm đệm được đề xuất lớn hơn 90

2. Kỳ vọng tuổi thọ của trang (PLE)

  • Thời gian tồn tại của trang đo lường thời gian (tính bằng giây) một trang dữ liệu nằm trong bộ nhớ đệm của bộ đệm
  • PLE càng dài, SQL Server càng có nhiều cơ hội đọc các trang từ bộ đệm đệm và không phải chuyển đến đĩa
  • Nếu không có đủ bộ nhớ, các trang dữ liệu sẽ được xóa khỏi bộ đệm ẩn thường xuyên hơn để giải phóng dung lượng cho các trang mới
  • Trước đây, khi các hệ thống có bộ nhớ ít hơn nhiều so với hiện tại, giá trị PLE "bình thường" là 300 giây
  • Ngày nay, một công thức được sử dụng để xác định PLE “tốt”:Thời gian sử dụng trang =300 giây cho mỗi 4 GB RAM trên máy chủ của bạn
  • PLE sẽ duy trì ổn định nếu được theo dõi theo thời gian
  • Giảm nhanh, thường xuyên cho thấy có vấn đề về bộ nhớ
  • Việc giảm hơn 50% cần được điều tra ngay lập tức

3. Số lần đọc trang / giây (Cấp máy chủ)

  • Chỉ số này cho biết số lần đọc vật lý (tức là đọc từ đĩa) đã xảy ra trong một giây trên tất cả các cơ sở dữ liệu trên một phiên bản
  • Các lần đọc vật lý đắt và chậm
  • Giảm số lần đọc vật lý bằng cách sử dụng bộ nhớ đệm dữ liệu lớn hơn, chỉ mục thông minh và các truy vấn hiệu quả hơn hoặc bằng cách thay đổi thiết kế cơ sở dữ liệu
  • Giá trị được đề xuất nhỏ hơn 90
  • Giá trị cao hơn 90 cho biết không đủ bộ nhớ và các vấn đề về lập chỉ mục

4. Viết trang / giây

  • Số liệu này hiển thị số lần các trang được ghi vào đĩa ở cấp máy chủ trong một giây
  • Giá trị được đề xuất nhỏ hơn 90

5. Đầu vào trang / Giây và Đầu ra trang / Giây (Bộ đếm bộ nhớ)

  • Số trang đầu vào / giây là số trang được đưa vào từ đĩa mỗi giây
  • Số trang / giây đầu ra là số trang được ghi vào đĩa mỗi giây để tạo chỗ trống trong bộ đệm đệm
  • Số trang / giây là tổng số trang đầu vào / giây và đầu ra trang / giây
  • Nếu giá trị trang / giây liên tục lớn hơn 50, thì cần phải điều tra bổ sung

Bộ đệm đệm khỏe mạnh là một thành phần quan trọng trong việc tối ưu hóa tốc độ truy vấn SQL Server. Mặc dù các vấn đề về bộ nhớ chỉ là một trong số các yếu tố có thể làm chậm phản hồi truy vấn, nhưng chúng khá dễ xác định và giải quyết. Theo dõi năm chỉ số chính này có thể giúp bạn giữ các trang dữ liệu trong vùng đệm lâu hơn để SQL Server không phải mất thời gian tìm kiếm trên đĩa trước khi trả về kết quả truy vấn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2005 ROW_NUMBER () không có ORDER BY

  2. Cách sử dụng thuộc tính IDENTITY () trong SQL Server

  3. Các truy vấn được thực thi lần cuối cho một cơ sở dữ liệu cụ thể

  4. Làm cách nào để chuyển đổi giá trị hàng thành cột có số cột động?

  5. Tập lệnh cho toàn bộ cơ sở dữ liệu SQL-Server