คำถามติดแท็ก innodb

InnoDB: เครื่องมือจัดเก็บ ACID ที่สอดคล้องกับ MySQL

3
ค่าใช้จ่ายในการตรวจสอบแคชแบบสอบถามบ่อยครั้งคุ้มค่าหรือไม่
ขณะนี้ฉันกำลังทำงานกับฐานข้อมูล MySQL ที่เราเห็นการตรวจสอบความถูกต้องจำนวนมากจากแคชแบบสอบถามเป็นหลักเนื่องจากคำสั่ง INSERT, DELETE และ UPDATE จำนวนมากที่ถูกเรียกใช้งานในหลาย ๆ ตาราง สิ่งที่ฉันพยายามตรวจสอบคือการมีประโยชน์ใด ๆ หรือไม่ที่จะอนุญาตให้ใช้แคชแบบสอบถามสำหรับคำสั่ง SELECT ที่กำลังเรียกใช้กับตารางเหล่านี้ เนื่องจากพวกเขาได้รับการทำให้ใช้งานไม่ได้อย่างรวดเร็วดูเหมือนว่าสิ่งที่ดีที่สุดคือการใช้ SQL_NO_CACHE ในคำสั่ง SELECT ด้วยตารางเหล่านี้ ค่าใช้จ่ายในการตรวจสอบความถูกต้องบ่อยครั้งเป็นสิ่งที่คุ้มค่าหรือไม่? แก้ไข: ตามคำขอของผู้ใช้ @RolandoMySQLDBA ด้านล่างนี่คือข้อมูลเกี่ยวกับ MyISAM และ INNODB InnoDB ขนาดข้อมูล: 177.414 GB ขนาดดัชนี: 114.792 GB ขนาดโต๊ะ: 292.205 GB MyISAM ขนาดข้อมูล: 379.762 GB ขนาดดัชนี: 80.681 GB ขนาดโต๊ะ: 460.443 GB ข้อมูลเพิ่มเติม: เวอร์ชัน: …

2
Percona กับ MySQL
Percona คืออะไร มันแตกต่างจาก MySQL อย่างไร เมื่อใดที่เราควรพิจารณาเปลี่ยน (หรืออัปเกรด) จากสต็อก MySQL เป็น Percona เพื่อเพิ่มข้อ จำกัด บางอย่างในสถานการณ์ของเราเราเกือบจะใช้ InnoDB (ซึ่งฉันเข้าใจว่า Percona ได้ทำการปรับให้เหมาะสมมากที่สุด) ด้วยข้อ จำกัด คีย์ต่างประเทศที่กว้างขวางและขั้นตอนการจัดเก็บบางอย่าง สิ่งที่เรากำลังค้นหาอยู่ในปัจจุบันคือ MySQL นั้นทำการปรับแต่งข้อความค้นหาของเราอย่างไม่เหมาะสมดังนั้นแบบสอบถามใดก็ตามที่มีส่วนร่วมเกิน 3-4 รายการเราต้องสร้างอย่างชัดเจนด้วย STRAIGHT joins เพื่อปรับปรุงประสิทธิภาพ

6
วิธีที่เร็วที่สุดในการตรวจสอบว่าตาราง InnoDB เปลี่ยนไปหรือไม่
แอปพลิเคชันของฉันเข้มข้นมากฐานข้อมูล ขณะนี้ฉันใช้งาน MySQL 5.5.19 และใช้ MyISAM แต่ฉันอยู่ในขั้นตอนการโอนย้ายไปยัง InnoDB ปัญหาเดียวที่เหลืออยู่คือประสิทธิภาพการตรวจสอบ แอปพลิเคชันของฉันทำประมาณ 500-1,000 CHECKSUM TABLEข้อความต่อวินาทีในช่วงเวลาเร่งด่วนเนื่องจากไคลเอนต์ GUI กำลังสำรวจฐานข้อมูลอย่างต่อเนื่องเพื่อการเปลี่ยนแปลง (เป็นระบบตรวจสอบดังนั้นต้องตอบสนองและรวดเร็วมาก) ด้วย MyISAM จะมีการตรวจสอบสดที่คำนวณล่วงหน้าบนการปรับเปลี่ยนตารางและเร็วมาก อย่างไรก็ตามไม่มีสิ่งนั้นใน InnoDB ดังนั้นCHECKSUM TABLEช้ามาก ฉันหวังว่าจะสามารถตรวจสอบเวลาอัปเดตล่าสุดของตารางได้โชคไม่ดีที่ InnoDB ไม่สามารถใช้ได้เช่นกัน ฉันติดอยู่ในขณะนี้เนื่องจากการทดสอบแสดงให้เห็นว่าประสิทธิภาพของแอปพลิเคชันลดลงอย่างมาก มีรหัสบรรทัดมากเกินไปที่จะอัพเดตตารางดังนั้นการใช้ตรรกะในแอปพลิเคชันเพื่อเปลี่ยนตารางบันทึกไม่เป็นไปตามคำถาม มีวิธีใดที่รวดเร็วในการตรวจจับการเปลี่ยนแปลงในตาราง InnoDB หรือไม่

1
ชี้แจงเกี่ยวกับตัวแปร MySQL innodb_flush_method
ให้ฉันเริ่มต้นด้วยการยอมรับว่าฉันไม่รู้งานด้านในของฮาร์ดดิสก์ ดังนั้นเมื่อฉันอ่านคู่มือสำหรับตัวแปรinnodb_flush_methodมันทำให้ฉันสับสน ฉันสามารถขอคำอธิบายในแง่ของคนธรรมดาในความแตกต่างใน O_DSYNC และ O_DIRECT และวิธีการที่จะรู้ว่ามันเป็นปัญหาประสิทธิภาพการทำงานบนเซิร์ฟเวอร์ฐานข้อมูล สถิติบางอย่างเกี่ยวกับการตั้งค่าของฉัน: Mac OSX 10.6 (เคอร์เนล 32 บิตเนื่องจากสถาปัตยกรรมล้าสมัย) ที่ใช้ MySQL 5.1.49-64 บิต (หวังว่ามันจะช่วยให้ฉันใช้หน่วยความจำได้) 8GB RAM, ~ 6GB ของข้อมูล / ดัชนี Innodb
21 mysql  innodb 

3
เป็นการปฏิบัติทั่วไปหรือไม่ที่จะผสมตาราง InnoDB และ MyISAM บนเซิร์ฟเวอร์เดียวกัน
ฉันมีฐานข้อมูลเดียวประมาณ 4.5GB ที่ทำงานบนเซิร์ฟเวอร์ที่มี 8GB RAM ตารางส่วนใหญ่คือ MyIsam (ประมาณ 4.3GB) แต่ในไม่ช้าฉันจะแปลงบางส่วนเป็น InnoDB (มันจะเป็นกระบวนการที่ช้าโดยเน้นไปที่ตารางที่เน้นการเขียนมากที่สุดในตอนแรก) มีอะไรผิดปกติในการใช้งานเซิร์ฟเวอร์เฉพาะซึ่งมีเอ็นจินการจัดเก็บทั้งสองประเภทอยู่หรือไม่?

1
ความหมายของตัวกรองใน MySQL อธิบายคืออะไร?
ตามที่อธิบายไว้ในเอกสาร MySQL : คอลัมน์ที่กรองจะระบุเปอร์เซ็นต์ของแถวของตารางโดยประมาณที่จะถูกกรองตามเงื่อนไขของตาราง นั่นคือแถวแสดงจำนวนแถวที่ตรวจสอบโดยประมาณและแถวที่กรอง× / 100 แสดงจำนวนแถวที่จะเข้าร่วมกับตารางก่อนหน้า ก่อน MySQL 5.7.3 คอลัมน์นี้จะปรากฏขึ้นหากคุณใช้ EXPLAIN EXTENDED ในฐานะของ MySQL 5.7.3 เอาต์พุตที่ขยายเพิ่มจะถูกเปิดใช้งานโดยค่าเริ่มต้นและคำหลัก EXTENDED นั้นไม่จำเป็น ฉันยังไม่เข้าใจ ความหมายของ "ตัวกรอง" ที่นี่คืออะไร? เราจะได้ข้อมูลอะไรจากคอลัมน์นี้? ตัวอย่างเช่นเมื่อฉันเริ่มสอบถามบางแบบสอบถามจะแสดง 100 และบางคนแสดง 18 หรือต่ำกว่า 100 +-------------+-------+--------+---------+---------+------+----------+ | select_type | table | type | key | key_len | rows | filtered | +-------------+-------+--------+---------+---------+------+----------+ | PRIMARY …

3
เปลี่ยนคอลัมน์คีย์หลักจาก INT ถึง BIGINT ในการผลิต (MySQL 5.6.19a)
ตาราง INNODB บางส่วนในฐานข้อมูลการผลิตของเรากำลังจะถึงขีด จำกัด INT AUTO_INCREMENT ที่ 2147483647 และเราจำเป็นต้องเปลี่ยนเป็น BIGINT มิฉะนั้นการเขียนจะเริ่มล้มเหลว ตารางอยู่ในฐานข้อมูล MySQL 5.6.19a ที่ใช้งานจริงบน Amazon RDS เราจะแก้ไขเช่นนี้ได้อย่างไรโดยไม่กระทบกับการอ่านและการแทรกที่เกิดขึ้นตลอดเวลา? เปลี่ยนตารางMYTABLEเปลี่ยนid idBIGINT ไม่ใช่ NULL AUTO_INCREMENT นี่คือ DDL สำหรับตาราง: CREATE TABLE `MYTABLE` ( `id` int(11) NOT NULL AUTO_INCREMENT, `siteId` int(11) NOT NULL, `filter` varchar(10) NOT NULL DEFAULT 'ALL', `date` varchar(10) NOT NULL, `cards` …
20 mysql  innodb 

4
ทำความเข้าใจกับสถิติพูลบัฟเฟอร์ INNODB
หลังจากอ่านหน้านี้ในเอกสาร mysqlฉันพยายามเข้าใจการใช้งาน InnoDB ปัจจุบันของเรา ขณะนี้เราจัดสรร RAM ขนาด 6GB สำหรับบัฟเฟอร์พูล ขนาดฐานข้อมูลของเราใกล้เคียงกัน นี่คือผลลัพธ์จากshow engine innodb status\G(เรากำลังเรียกใช้ v5.5) ---------------------- BUFFER POOL AND MEMORY ---------------------- Total memory allocated 6593445888; in additional pool allocated 0 Dictionary memory allocated 1758417 Buffer pool size 393215 Free buffers 853 Database pages 360515 Old database pages 133060 Modified db …

2
สิ่งที่ต้องตั้ง innodb_buffer_pool และทำไม ..
ฉันมีInnoDBดัชนีและข้อมูล170GB ฉันต้องปรับขนาด innodb_buffer_pool เพื่อประสิทธิภาพที่ดีขึ้นขนาดตารางสูงสุดของตาราง InnoDB (ดัชนี + ข้อมูล) คือ 28GB ดังนั้นสิ่งที่ควรมีขนาดที่เหมาะสมของ innodb_buffer_pool UPDATE เรากำลังจะย้ายฐานข้อมูลท้องถิ่นของเราไปยัง ec2 ดังนั้นจะตั้งค่า RAM ตามสถิติปัจจุบันของ innodb นั่นคือเหตุผลที่ฉันต้องการขนาดของบัฟเฟอร์พูลเพื่อให้เรามี RAM ที่มีอยู่ เปิดใช้งานไฟล์ต่อตารางแล้ว ฉันใช้เครื่องลีนุกซ์
20 mysql  innodb 

3
แนะนำให้ใช้ innodb_file_per_table หรือไม่
เรามีแอปพลิเคชั่นที่หนึ่งในตารางจะเติบโตเป็นล้านบรรทัด แต่ที่เหลือจะต่ำกว่าหนึ่งล้าน ดังนั้นอะไรคือคำแนะนำที่เราควรจะไปกับ innodb_file_per_table หรือปล่อยให้เป็น. ibd เดียว? ฉันอ่านบางบทความบอกว่าไม่ไปกับมันเพราะคุณต้องการการเข้าถึงดิสก์เพิ่มเติมเมื่อมีการเข้าร่วมที่จะดำเนินการ? เราจะได้เข้าร่วมระหว่างตารางนี้และอื่น ๆ เพื่อการสร้างรายงาน
19 mysql  innodb 

3
ทำไม InnoDB ถึงไม่เก็บจำนวนแถว?
ทุกคนรู้ว่าในตารางที่ใช้ InnoDB เป็นเอ็นจินแบบสอบถามSELECT COUNT(*) FROM mytableจะไม่แม่นยำและช้ามากโดยเฉพาะเมื่อตารางมีขนาดใหญ่ขึ้นและมีการแทรก / ลบแถวอย่างต่อเนื่องในขณะที่ดำเนินการค้นหา ดังที่ฉันเข้าใจแล้ว InnoDB ไม่ได้จัดเก็บจำนวนแถวในตัวแปรภายในซึ่งเป็นสาเหตุของปัญหานี้ คำถามของฉันคือ: ทำไมจึงเป็นเช่นนี้? การเก็บข้อมูลดังกล่าวเป็นเรื่องยากไหม มันเป็นข้อมูลสำคัญที่ต้องรู้ในหลาย ๆ สถานการณ์ ความยากลำบากเพียงอย่างเดียวที่ฉันเห็นว่าการนับภายในนั้นจะถูกนำไปใช้คือเมื่อมีการทำธุรกรรมที่เกี่ยวข้อง: ถ้าการทำธุรกรรมนั้นไม่มีข้อผูกมัดคุณนับจำนวนแถวที่แทรกโดยมันหรือไม่? PS: ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับ DBs ฉันเป็นแค่คนที่มี MySQL เป็นงานอดิเรกง่ายๆ ดังนั้นถ้าฉันถามอะไรที่โง่ ๆ
19 mysql  innodb  count 

1
เป็นไปได้ไหมที่จะเปลี่ยนรายการ ENUM ()
ฉันไม่แน่ใจว่าการเปลี่ยนรายการ ENUM () เป็นไปไม่ได้ดังนั้นฉันจึงทำการทดสอบ ใน MySQL v5.1.58 ฉันได้ทำการทดสอบตาราง InnoDB ที่มีหนึ่งฟิลด์ที่เรียกว่า 'บูล' ของประเภท ENUM ('ใช่', 'ไม่') จากนั้นฉันก็ประหาร ... ALTER TABLE `test` CHANGE `bool` `bool` ENUM( 'yes', 'no', 'maybe' ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ... และมันก็ใช้งานได้ ฉันทำอะไรผิดหรือเปล่า? มันขึ้นอยู่กับเครื่องยนต์ db หรือไม่? ทำไมทุกคนบอกว่าไม่สามารถเปลี่ยนรายการ ENUM () เช่น. ที่นี่http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/ที่นี่
19 mysql  innodb 

4
mysql จะไม่เริ่มต้นหลังจากเพิ่ม innodb_buffer_pool_size และ innodb_log_file_size
ฉันกำลังติดตามโซลูชันนี้ที่นี่/programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 ในinnodb_buffer_pool_sizeภายหลังและพยายามเพิ่มเป็น 4G และ 1G ในภายหลัง (เช่น 1024M) นอกจากขนาดไฟล์บันทึกแล้ว แต่ mysql จะไม่ขึ้นต้นด้วยค่าเหล่านั้น ถ้าฉันใส่กลับไปที่ 512M mysql เริ่มต้นได้ดี ฉันจะแก้ปัญหานี้ได้อย่างไร เซิร์ฟเวอร์ของฉันเป็นรุ่น 16GB และเป็นไปตาม Webmin sysinfo: Real memory 15.62 GB total, 3.13 GB used ในขณะเดียวกันฉันก็พบบันทึกข้อผิดพลาดเช่นกัน: 120529 10:29:32 mysqld_safe mysqld จากไฟล์ pid /var/run/mysqld/mysqld.pid สิ้นสุดวันที่ 120529 10:29:33 mysqld_safe การเริ่มต้น mysqld daemon ด้วยฐานข้อมูลจาก / var / lib …

2
MySql - เปลี่ยน innodb_file_per_table สำหรับฐานข้อมูลสด
ฉันมีฐานข้อมูล MySql ขนาดใหญ่ (150GB) และตอนนี้ฉันสังเกตเห็นว่าการinnodb_file_per_tableตั้งค่าoffที่ทำให้ฐานข้อมูลทั้งหมดถูกโฮสต์ในไฟล์เดียว ( ibdata1) ฉันต้องการเปิดใช้งานinnodb_file_per_tableและให้มันแบ่งฐานข้อมูลย้อนหลังเป็นหลาย ๆ ไฟล์วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร
18 mysql  innodb  my.cnf 

4
แปลงตารางแถว 66,862,521 จาก MyISAM เป็น InnoDB โดยไม่ต้องออฟไลน์เป็นเวลาหลายชั่วโมงได้อย่างไร
เป็นไปได้ (และวิธี) ในการแปลงตาราง MyISAM ขนาดใหญ่เป็น InnoDB โดยไม่ต้องสมัครออฟไลน์ ต้องมีการแทรกสองแถวลงในตารางนั้นทุกวินาที แต่สามารถระงับได้ประมาณ 2 นาที เห็นได้ชัดว่าเปลี่ยนแปลงตาราง ... engine = innodb จะไม่ทำงาน ดังนั้นฉันจึงวางแผนที่จะสร้างตารางใหม่พร้อมกับเครื่องยนต์ innodb และคัดลอกเนื้อหาลงไป และในท้ายที่สุดระงับเธรดแอปพลิเคชันเธรดและ RENAME TABLE น่าเสียดายที่แม้แต่การทำสำเนาในแบทช์ขนาดเล็กจำนวน 100 แถวก็สร้างความล่าช้าอย่างมากหลังจากผ่านไประยะหนึ่ง แก้ไข : แถวที่มีอยู่จะไม่เปลี่ยนแปลงตารางนี้ใช้สำหรับการบันทึก
18 mysql  innodb 

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