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

MySQL ทุกรุ่น (ไม่ใช่ Microsoft SQL Server) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น mysql-5.7 หากเกี่ยวข้องกับคำถาม


6
วิธีที่ปลอดภัยที่สุดในการใช้ mysqldump บนระบบจริงที่มีการอ่านและเขียนที่ใช้งานอยู่?
ฉันไม่แน่ใจว่าสิ่งนี้จริงหรือไม่ แต่ฉันจำได้ว่าอ่านถ้าคุณเรียกใช้คำสั่งต่อไปนี้ใน linux mysqldump -u username -p database_name > backup_db.sql ขณะที่กำลังอ่านและเขียนข้อมูลกับฐานข้อมูลดังนั้นดัมพ์อาจมีข้อผิดพลาด มีตัวเลือกเฉพาะในคำสั่งmysqldumpเพื่อให้แน่ใจว่าทำได้อย่างปลอดภัยบนระบบจริงหรือไม่? ฉันโอเคที่มีการอ่าน / เขียนถูกปิดการใช้งานสำหรับผู้ใช้ของเราสองสามวินาที (ฐานข้อมูล <50MB)

8
วิธีการแปลงตาราง utf8 เป็น utf8mb4 ใน MySQL 5.5 ได้อย่างง่ายดาย
ฉันมีฐานข้อมูลซึ่งตอนนี้ต้องรองรับอักขระ 4 ไบต์ (ภาษาจีน) โชคดีที่ฉันมี MySQL 5.5 ในการผลิตอยู่แล้ว ดังนั้นฉันอยากจะทำการเปรียบเทียบทั้งหมดซึ่งเป็น utf8_bin ถึง utf8mb4_bin ฉันเชื่อว่าไม่มีการสูญเสีย / กำไรจากการเปลี่ยนแปลงนี้นอกจากการใช้พื้นที่จัดเก็บเล็กน้อย
71 mysql 

2
จะเร็วกว่าอะไรแบบสอบถามขนาดใหญ่หรือแบบสอบถามขนาดเล็กจำนวนมาก
ฉันทำงานให้กับ บริษัท ที่แตกต่างกันและฉันสังเกตเห็นว่าบางคนชอบที่จะมีมุมมองที่จะเข้าร่วมโต๊ะกับ "ญาติ" ทั้งหมดของมัน แต่ในบางครั้งเราจำเป็นต้องใช้เพียง 1 คอลัมน์เท่านั้น ดังนั้นจะเร็วกว่าที่จะทำการเลือกแบบง่าย ๆ แล้ว "เข้าร่วม" ในรหัสระบบหรือไม่ ระบบอาจเป็น php, java, asp, ภาษาใด ๆ ที่เชื่อมต่อกับฐานข้อมูล ดังนั้นคำถามคือสิ่งที่เร็วไปจากฝั่งเซิร์ฟเวอร์ (php, java, asp, ruby, python ... ) ไปยังฐานข้อมูลรันหนึ่งแบบสอบถามที่ได้รับทุกสิ่งที่เราต้องการหรือไปจากฝั่งเซิร์ฟเวอร์ไปยังฐานข้อมูลและเรียกใช้ แบบสอบถามที่ได้รับคอลัมน์จากตารางเดียวเท่านั้นหรือไม่


4
MySQL มีวิธีนำเข้า sql dump ขนาดใหญ่ (32 GB) เร็วขึ้นไหม?
ฉันมีการถ่ายโอนข้อมูล SQL ขนาดใหญ่ 32 GB ที่ฉันต้องนำเข้าสู่ MySQL ฉันไม่ได้นำเข้าการถ่ายโอนข้อมูล SQL ขนาดใหญ่เช่นนี้มาก่อน ฉันทำตามปกติ: mysql -uroot dbname < dbname.sql ใช้เวลานานเกินไป มีโต๊ะที่มีแถวประมาณ 300 ล้านแถวและได้รับถึง 1.5 ล้านในเวลาประมาณ 3 ชั่วโมง ดังนั้นดูเหมือนว่าสิ่งทั้งหมดจะใช้เวลา 600 ชั่วโมง (นั่นคือ 24 วัน) และทำไม่ได้ ดังนั้นคำถามของฉันคือมีวิธีที่เร็วกว่าในการทำเช่นนี้? ข้อมูลเพิ่มเติม / ผลการวิจัย ตารางเป็น InnoDB ทั้งหมดและไม่มีการกำหนดคีย์ต่างประเทศ อย่างไรก็ตามมีดัชนีจำนวนมาก ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์เดิมและฐานข้อมูลดังนั้นฉันจึงไม่สามารถทำการสำรองข้อมูลใหม่หรือทำสำเนา "ร้อน" เป็นต้น การตั้งค่าinnodb_flush_log_at_trx_commit = 2ตามที่แนะนำที่นี่ดูเหมือนว่าจะไม่มีการปรับปรุง (มองเห็นได้ชัดเจน / อธิบาย) สถิติเซิร์ฟเวอร์ในระหว่างการนำเข้า (จาก …

4
ลำดับเริ่มต้นของการบันทึกสำหรับคำสั่ง SELECT ใน MySQL คืออะไร?
สมมติว่าคุณมีตารางและข้อมูลต่อไปนี้: create table t ( k int, v int, index k(k) ) engine=memory; insert into t (k, v) values (10, 1), (10, 2), (10, 3); เมื่อออกselect * from t where k = 10โดยไม่มีorder byส่วนคำสั่ง MySQL จะเรียงลำดับระเบียนตามค่าเริ่มต้นอย่างไร

7
ฉันจะปิดการใช้งานการจำลองแบบ MySQL อย่างสมบูรณ์ได้อย่างไร
ฉันกำลังรันการเรพลิเคท MySQL แบบดูอัลมาสเตอร์และตอนนี้ต้องการย้ายไปยังฐานข้อมูลเดียวโดยไม่มีการจำลองแบบ ฉันจะปิดใช้งานการจำลองแบบบนฐานข้อมูลทั้งสองได้อย่างไร

1
วิธีที่ดีที่สุดในการลดขนาดของ ibdata ใน mysql คืออะไร
ฉันมีเซิร์ฟเวอร์ผลิตจำนวนหนึ่งซึ่งibdataไฟล์เพิ่มขึ้นทุกวัน มีการใช้พื้นที่ 290GB แล้ว ตารางในเซิร์ฟเวอร์ส่วนใหญ่เป็น InnoDB และมีคำขออ่านและเขียนสูง ขนาดไฟล์บันทึกเพิ่มขึ้นเช่นกัน มีข้อมูลจำนวนมากในตาราง ฉันจะควบคุมขนาดที่เพิ่มขึ้นของทั้งสองได้อย่างไร innodb_file_per_tableฉันไม่ได้ใช้
63 mysql  innodb 

4
MySQL: สร้างดัชนีหากไม่มีอยู่
มีวิธีสร้างดัชนีใน MySQL หรือไม่หากไม่มีอยู่? MySQL ไม่รองรับรูปแบบที่ชัดเจน: CREATE INDEX IF NOT EXISTS index_name ON table(column) ERROR 1064 (42000): You have an error in your SQL syntax;... รุ่น MySQL ( mysql -V) คือ 5.1.48 แต่ฉันคิดว่า MySQL ขาดCREATE INDEX IF NOT EXISTความสามารถในทุกรุ่น เป็นวิธีที่ถูกต้องในการสร้างดัชนีเฉพาะถ้ามันไม่ได้อยู่ใน MySQL คืออะไร?

3
ประสิทธิภาพของการใช้ CHAR กับ VARCHAR ในฟิลด์ขนาดคงที่คืออะไร
ฉันมีคอลัมน์ที่จัดทำดัชนีซึ่งจัดเก็บ MD5 แฮช ดังนั้นคอลัมน์จะเก็บค่า 32 อักขระเสมอ ไม่ว่าจะด้วยเหตุผลใดก็ตามสิ่งนี้ถูกสร้างขึ้นเป็น varchar แทนที่จะเป็นถ่าน มันคุ้มค่าปัญหาของการโยกย้ายฐานข้อมูลเพื่อแปลงเป็นถ่านหรือไม่ นี่คือใน MySQL 5.0 พร้อม InnoDB

3
ค้นหาระดับสูงสุดของฟิลด์ลำดับชั้น: ด้วย vs ไม่มี CTEs
หมายเหตุ: คำถามนี้ได้รับการปรับปรุงเพื่อสะท้อนให้เห็นว่าขณะนี้เรากำลังใช้ MySQL โดยทำเช่นนั้นฉันอยากจะดูว่ามันจะง่ายกว่านี้ถ้าเราเปลี่ยนไปใช้ฐานข้อมูลที่สนับสนุน CTE ผมมีตารางอ้างอิงตนเองกับคีย์หลักและต่างประเทศที่สำคัญidparent_id +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | parent_id | int(11) | YES | | NULL | | | name | varchar(255) | …


4
InnoDB หรือ MyISAM ไหนเร็วกว่ากัน
MyISAM จะ "เร็วขึ้น" ได้อย่างไรกว่า InnoDB ถ้า MyISAM จำเป็นต้องอ่านข้อมูลในดิสก์หรือไม่ InnoDB ใช้บัฟเฟอร์พูลสำหรับดัชนีและข้อมูลและ MyISAM สำหรับดัชนีเท่านั้น

3
จะใช้มุมมองใน MySQL เมื่อใด
เมื่อสร้างตารางจากหลายการรวมเพื่อใช้ในการวิเคราะห์เมื่อใดที่จะใช้มุมมองกับการสร้างตารางใหม่ เหตุผลหนึ่งที่ฉันต้องการใช้มุมมองก็คือสคีมาฐานข้อมูลได้รับการพัฒนาโดยผู้ดูแลระบบของเราจากภายใน Ruby และฉันไม่คุ้นเคยกับ Ruby ฉันสามารถขอให้สร้างตาราง แต่ต้องการขั้นตอนเพิ่มเติมและฉันต้องการความยืดหยุ่นมากขึ้นเมื่อทำการพัฒนา / ทดสอบการรวมใหม่ ฉันเริ่มใช้มุมมองตามคำตอบของคำถามที่เกี่ยวข้องใน SO ( เมื่อใดที่จะใช้ R, เมื่อใดควรใช้ SQL ) คำตอบที่ได้รับการโหวตสูงสุดจะเริ่มต้น "ทำการเปลี่ยนแปลงข้อมูลใน SQL จนกว่าข้อมูลจะอยู่ในตารางเดียวแล้วทำส่วนที่เหลือใน R" ฉันเริ่มใช้มุมมอง แต่ฉันมีปัญหาเล็กน้อยเกี่ยวกับมุมมอง: ข้อความค้นหาช้าลงมาก มุมมองไม่ได้รับการเททิ้งจากการผลิตไปยังฐานข้อมูลสำรองที่ฉันใช้สำหรับการวิเคราะห์ มุมมองที่เหมาะสมสำหรับการใช้งานนี้? ถ้าเป็นเช่นนั้นฉันควรคาดหวังว่าจะได้รับการลงโทษหรือไม่ มีวิธีเพิ่มความเร็วคิวรีในการดูหรือไม่?

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