คำขอ Amazon RDS I / O - 1 ข้อความค้นหา = 1 I / O ที่เรียกเก็บเงินได้?


9

ฉันมีฐานข้อมูล InnoDB ที่ฉันต้องการย้ายไปยัง Amazon RDS

การติดตั้งในปัจจุบันของฉันซึ่งโฮสต์บนเซิร์ฟเวอร์ของฉันเองนั้นแสดงให้เห็นถึงการสืบค้น 8 ล้านครั้งต่อเดือน

ไซต์ RDSบอกว่าอัตรา I / O อยู่ที่ $ 0.10 ต่อ 1 ล้านคำขอ

1 I / O = 1 แบบสอบถามหรือไม่ เช่นฉันจะถูกเรียกเก็บเงินจำนวน $ 80 / เดือนสำหรับการใช้งานจำนวนนี้ + ค่าธรรมเนียม RDS หรือไม่

คำตอบ:


7

คำเตือน: ระมัดระวังตัวเลขของคุณและสิ่งที่คุณมองว่าเป็นการสอบถาม !!!

ทำไมฉันถึงส่งคำเตือนแบบนี้ ???

ย้อนกลับไปในเดือนสิงหาคม 2011, ผมเขียนโพสต์ใน ServerFault อธิบายว่ามันเป็นไปได้สำหรับ 1 พันล้านแบบสอบถามที่จะดำเนินการใน 24 วัน

นี่คือโพสต์ทั้งหมด:

MySQL จะเรียกการสอบถามภายใน อันที่จริงแล้วทุกอย่างที่คุณทำใน MySQL เป็นข้อความค้นหา

หากคุณเปิดใช้งานบันทึกทั่วไปหรือบันทึกการสืบค้นที่ช้าทุกอย่าง mysqld จะได้รับการบันทึก

หากคุณเปิดใช้งาน--log-query-not-using-indexesทุกอย่างที่ไม่เกี่ยวข้องกับดัชนีจะตกลงในบันทึกที่ช้า

สมมติว่าคุณเรียกใช้แบบสอบถามนี้:

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)

ใช่แสดงฐานข้อมูล; เป็นแบบสอบถาม อันที่จริงแล้วอะไรคือ data_schema ที่เทียบเท่า ???

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)

information_schema.schemata ของตารางมีดัชนีหรือไม่?

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)

ไม่มันไม่ ดังนั้นแสดงฐานข้อมูล; จะลงจอดในบันทึกทั่วไปและบันทึกช้า (ด้วย --log-query-not-using-indexes ที่เปิดใช้งาน)

ดังนั้นการดำเนินการหลายอย่างที่เราไม่คิดว่าจะเป็นการสืบค้นอาจเป็นเพียงการสืบค้น แต่เป็นการภายในเพื่อ mysqld

หากคุณใช้เครื่องมือตรวจสอบใด ๆ ที่เชื่อมต่อกับ mysqld สิ่งนี้จะทำให้จำนวนการสืบค้นเพิ่มขึ้น

ตัวอย่าง:

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)

เพียงแค่เรียก uptime ของ mysqld เป็นแบบสอบถาม ภายใน MySQL มีวิธีการนับแบบสอบถามที่ถูกดำเนินการอย่างไร ต่อไปนี้เป็นตัวแปรสถานะสองตัวที่อาจทำให้เกิดแสง:

  • คำค้นหา : จำนวนข้อความสั่งที่ดำเนินการโดยเซิร์ฟเวอร์ ตัวแปรนี้รวมคำสั่งที่เรียกใช้ภายในโปรแกรมที่เก็บไว้ซึ่งแตกต่างจากตัวแปรคำถาม มันไม่นับคำสั่ง COM_PING หรือ COM_STATISTICS

  • คำถาม : จำนวนงบที่ดำเนินการโดยเซิร์ฟเวอร์ ซึ่งรวมถึงข้อความสั่งที่ส่งไปยังเซิร์ฟเวอร์โดยไคลเอนต์เท่านั้นไม่ใช่ข้อความสั่งที่ดำเนินการภายในโปรแกรมที่เก็บไว้ซึ่งแตกต่างจากตัวแปรข้อความค้นหา ตัวแปรนี้ไม่นับคำสั่ง COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE หรือ COM_STMT_RESET

โปรดอย่ากังวลหากเซิร์ฟเวอร์ MySQL ของคุณกำลังถูกตรวจสอบเนื่องจากการตรวจสอบที่เรียกใช้ตัวแปรสถานะกำลังเรียกใช้แบบสอบถามภายในเพื่อดึงข้อมูลที่ร้องขอ

1,000,000 ใน 24 วันคือ

  • 41.7 ล้านคำค้นหาต่อวัน
  • 1.736 ล้านข้อความค้นหาต่อชั่วโมง
  • 28,935 ข้อความค้นหาต่อนาที
  • 482 คำค้นหาต่อวินาที

สำหรับอินสแตนซ์ MySQL ที่กำลังถูกตรวจสอบตัวเลขเหล่านี้ไม่ได้ถูกเรียกไกล

หากคุณใช้งาน MySQL Workbench ผู้ดูแลระบบ MySQL หรือ phpMyAdmin หน้าใด ๆ ที่ผลิตภัณฑ์เหล่านี้สร้างหรืออัปเดตจะเรียกคิวรีแบบสถานะเล็ก ๆ เหล่านี้และเรียกใช้ตัวเลขอย่างรวดเร็ว

สรุป

หากไซต์ของคุณทำการสอบถาม 8 ล้านครั้งดังนั้นอัตรา I / O $ 0.10 ต่อการร้องขอ 1 ล้านครั้งควรเท่ากับ $ 0.80 (80 เซนต์) ต่อเดือน หากคุณดำเนินการ 1 พันล้านแบบสอบถามในหนึ่งเดือนนั่นคือ $ 100.00 โปรดตรวจสอบให้แน่ใจว่าตัวเลขเหล่านี้หลอกลวงและได้รับมันในการเขียนด้วย CFO ของคุณนั่งถัดไปกับคุณ !!!

อัพเดท 2012-05-02 16:26 EDT

เนื่องจากเป็นข้อความค้นหา 800M / เดือนนั่นคือ $ 80.00 / เดือน


1
ขอบคุณสำหรับคำตอบ ... ฉันหมายถึงพิมพ์ 800M ไม่ใช่ 8M คุณรู้หรือไม่ว่า 1 ข้อความค้นหา = 1 I / O

หากคุณสามารถตอบคำถามที่เกี่ยวข้องของฉันได้ที่นี่มันยอดเยี่ยม: dba.stackexchange.com/questions/49869//
คลิก

6

ไม่การดำเนินการ I / O หนึ่งรายการไม่เท่ากับหนึ่งแบบสอบถาม หนึ่งแบบสอบถามอาจส่งผลให้การดำเนินงาน 0 IO หากมีการจัดการโดยแคชแบบสอบถาม (และคุณโชคดี) หรืออาจส่งผลให้เกิดการดำเนินงาน IO หลายครั้ง ฉันเดาว่าอาจเป็นร้อยเป็นพันขึ้นอยู่กับตารางดัชนีแบบสอบถามและรายละเอียดอื่น ๆ

http://aws.amazon.com/ebs/ระบุสิ่งต่อไปนี้:

ที่เก็บข้อมูลสำหรับโวลุ่มมาตรฐานจะเรียกเก็บตามจำนวนเงินที่คุณจัดเตรียมไว้ในหน่วย GB ต่อเดือนจนกว่าคุณจะวางจำหน่าย โวลุ่ม I / O สำหรับโวลุ่มมาตรฐานจะเรียกเก็บตามจำนวนคำขอที่คุณทำกับโวลุ่มของคุณ โปรแกรมเช่น IOSTAT สามารถใช้เพื่อวัดการใช้ I / O ที่แน่นอนของระบบของคุณได้ตลอดเวลา อย่างไรก็ตามแอปพลิเคชันและระบบปฏิบัติการมักจะทำการแคชในระดับที่แตกต่างกันดังนั้นสำหรับไดรฟ์ข้อมูลมาตรฐานคุณอาจเห็นคำขอ I / O จำนวนน้อยกว่าในใบเรียกเก็บเงินของคุณมากกว่าที่แอปพลิเคชันของคุณมองเห็นยกเว้นว่าคุณซิงค์ I / O ทั้งหมด .

iostat เป็นโปรแกรมอรรถประโยชน์ linux ระดับต่ำซึ่งไม่ทราบอะไรเกี่ยวกับการสืบค้นฐานข้อมูล http://linux.die.net/man/1/iostat

ราคาข้างต้นสำหรับบริการ EBS แต่ RDS อิงจาก EC2 & EBS ดังนั้นฉันค่อนข้างมั่นใจว่าพวกเขาหมายถึงสิ่งเดียวกันใน RDS

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.