Yêu cầu I / O của Amazon RDS - 1 truy vấn = 1 I / O có thể xuất hóa đơn?


9

Tôi có cơ sở dữ liệu InnoDB mà tôi muốn di chuyển lên Amazon RDS.

Triển khai hiện tại của tôi, được lưu trữ trên máy chủ của riêng tôi, hiển thị khoảng 8 triệu truy vấn mỗi tháng.

Trang web RDS nói rằng Tỷ lệ I / O $ 0,10 trên 1 triệu yêu cầu

Có 1 I / O = 1 truy vấn không? tức là, tôi sẽ được thanh toán $ 80 / tháng cho số tiền sử dụng này + phí RDS?

Câu trả lời:


7

CẢNH BÁO: Hãy thật cẩn thận với các số của bạn và những gì bạn xem là Truy vấn !!!

Tại sao tôi lại đưa ra một cảnh báo như vậy ???

Trở lại vào tháng 8 năm 2011, tôi đã viết bài đăng trên ServerFault giải thích cách có thể thực hiện 1 tỷ Truy vấn trong 24 ngày .

Đây là toàn bộ bài viết:

MySQL sẽ gọi cho các truy vấn nội bộ. Trong thực tế, bất cứ điều gì bạn làm trong MySQL là một truy vấn.

Nếu bạn bật nhật ký chung hoặc nhật ký truy vấn chậm, mọi thứ mysqld sẽ được ghi lại.

Nếu bạn đã bật --log-query-not-used-index , mọi thứ không liên quan đến chỉ mục sẽ nằm trong nhật ký chậm.

Giả sử bạn chạy truy vấn này:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| annarbor           |
| dude               |
| example            |
| garbage            |
| lovesh             |
| mysql              |
| performance_schema |
| replagdb           |
| stuff              |
| test               |
| tostinni           |
| wordpress          |
| zipcodes           |
+--------------------+
14 rows in set (0.06 sec)

Có, HIỂN THỊ CƠ SỞ; là một truy vấn. Trong thực tế, những gì information_schema tương đương ???

mysql> select schema_name "Database" from information_schema.schemata;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| annarbor           |
| dude               |
| example            |
| garbage            |
| lovesh             |
| mysql              |
| performance_schema |
| replagdb           |
| stuff              |
| test               |
| tostinni           |
| wordpress          |
| zipcodes           |
+--------------------+
14 rows in set (0.08 sec)

Bảng information_schema.schemata có chỉ mục không ???

mysql> show create table information_schema.schemata\G
*************************** 1. row ***************************
       Table: SCHEMATA
Create Table: CREATE TEMPORARY TABLE `SCHEMATA` (
  `CATALOG_NAME` varchar(512) NOT NULL DEFAULT '',
  `SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
  `DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
  `DEFAULT_COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
  `SQL_PATH` varchar(512) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

Không nó không. Vì vậy, HIỂN THỊ CƠ SỞ; sẽ hạ cánh trong một nhật ký chung và nhật ký chậm (với --log-query-not-used-index được bật)

Do đó, nhiều hoạt động chúng tôi không nghĩ sẽ tạo thành một truy vấn có thể chỉ là một truy vấn, nhưng nội bộ đối với mysqld.

Nếu bạn đang sử dụng bất kỳ công cụ giám sát nào được kết nối với mysqld, điều này cũng sẽ tăng số lượng truy vấn.

Thí dụ:

mysql> show global status like 'uptime'; select * from information_schema.global_status where variable_name='uptime';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 613   |
+---------------+-------+
1 row in set (0.00 sec)

+---------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+---------------+----------------+
| UPTIME        | 613            |
+---------------+----------------+
1 row in set (0.00 sec)

Chỉ cần lấy thời gian hoạt động của mysqld là một truy vấn. Trong nội bộ, làm thế nào để MySQL đếm các truy vấn đang được thực hiện? Đây là hai biến trạng thái có thể làm sáng tỏ:

  • Truy vấn : Số lượng câu lệnh được thực hiện bởi máy chủ. Biến này bao gồm các câu lệnh được thực thi trong các chương trình được lưu trữ, không giống như biến Câu hỏi. Nó không tính các lệnh COM_PING hoặc COM_STATISTICS.

  • Câu hỏi : Số lượng câu lệnh được thực hiện bởi máy chủ. Điều này chỉ bao gồm các câu lệnh được gửi đến máy chủ bởi các máy khách và không phải các câu lệnh được thực thi trong các chương trình được lưu trữ, không giống như biến Queries. Biến này không tính các lệnh COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE hoặc COM_STMT_RESET.

Xin đừng lo lắng nếu Máy chủ MySQL của bạn đang bị theo dõi vì giám sát yêu cầu các biến trạng thái đang chạy truy vấn nội bộ để truy xuất dữ liệu được yêu cầu.

1 tỷ trong 24 ngày là

  • 41,7 triệu truy vấn mỗi ngày
  • 1,736 triệu truy vấn mỗi giờ
  • 28.935 truy vấn mỗi phút
  • 482 truy vấn mỗi giây

Đối với một phiên bản MySQL đang được theo dõi, những con số này hoàn toàn không được tìm thấy.

Nếu bạn đang sử dụng MySQL Workbench, MySQL Administrator hoặc phpMyAdmin, bất kỳ trang nào các sản phẩm này tạo hoặc cập nhật sẽ triệu tập các truy vấn trạng thái nhỏ này và nhanh chóng chạy số.

TÓM LƯỢC

Nếu trang web của bạn thực sự thực hiện 8 triệu truy vấn, thì Tỷ lệ I / O $ 0,10 cho mỗi 1 triệu yêu cầu, sẽ là $ 0,80 (80 xu) mỗi tháng. Nếu bạn thực hiện 1 tỷ truy vấn trong một tháng, thì đó là 100 đô la. Vui lòng đảm bảo chắc chắn rằng những con số này đã nhảy và NHẬN ĐƯỢC BÀI VIẾT VỚI CFO CỦA BẠN XEM TIẾP THEO VỚI BẠN !!!

CẬP NHẬT 2012-05 / 02 16:26 EDT

Vì đó là 800 triệu truy vấn / tháng, đó là $ 80,00 / tháng


1
Cảm ơn câu trả lời ... Tôi muốn gõ 800M chứ không phải 8M. Bất kể, bạn có biết nếu 1 truy vấn = 1 I / O không?

Nếu bạn có thể trả lời câu hỏi liên quan của tôi ở đây thì thật tuyệt: dba.stackexchange.com/questions/49869/ Kẻ
Nhấp vào Upvote

6

Không, một thao tác I / O không bằng một truy vấn. Một truy vấn có thể dẫn đến 0 hoạt động IO nếu nó được xử lý bởi bộ đệm truy vấn (và bạn may mắn) hoặc có thể dẫn đến nhiều hoạt động IO. Có khả năng, hàng trăm và hàng ngàn, tôi đoán, tùy thuộc vào các bảng, chỉ mục, truy vấn và các chi tiết khác.

http://aws.amazon.com/ebs/ tuyên bố như sau:

Dung lượng lưu trữ cho khối lượng Tiêu chuẩn được tính bằng số tiền bạn cung cấp tính bằng GB mỗi tháng cho đến khi bạn phát hành. Khối lượng I / O cho khối lượng tiêu chuẩn được tính theo số lượng yêu cầu bạn thực hiện cho khối lượng của mình. Các chương trình như IOSTAT có thể được sử dụng để đo lường mức độ sử dụng I / O chính xác của hệ thống của bạn bất cứ lúc nào. Tuy nhiên, các ứng dụng và hệ điều hành thường thực hiện các mức bộ nhớ đệm khác nhau, do đó, đối với khối lượng Chuẩn, bạn có thể sẽ thấy số lượng yêu cầu I / O trên hóa đơn của bạn thấp hơn so với ứng dụng của bạn nhìn thấy trừ khi bạn đồng bộ hóa tất cả I / O của mình với đĩa .

iostat là một tiện ích linux cấp thấp, không biết gì về các truy vấn cơ sở dữ liệu. http://linux.die.net/man/1/iuler

Trích dẫn ở trên là dành cho dịch vụ EBS, nhưng RDS dựa trên EC2 & EBS, vì vậy tôi khá tự tin rằng chúng có nghĩa tương tự trong RDS.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.