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

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

1
เปลี่ยนความคิดเห็นตาราง mysql
ฉันรู้ว่าความคิดเห็นตาราง mysql สามารถกำหนดที่สร้างด้วย: create table (...)comment='table_comment'; และคุณสามารถแสดงความคิดเห็นโดย: show table status where name='table_name'; คุณเปลี่ยนความคิดเห็นของตาราง (แก้ไขอย่างไร) หลังจากที่มันถูกสร้างขึ้น ฉันหมายถึงโดยไม่ต้องวางและสร้างตารางใหม่อีกครั้ง
35 mysql  table  comments 

4
ฉันจะย้ายฐานข้อมูล MySQL ไปยังไดรฟ์อื่นได้อย่างไร
ฉันใช้ MySQL 5.5 บนเครื่องท้องถิ่นเพื่อวิเคราะห์ข้อมูลรัฐบาลจำนวนมาก ฉันได้สร้างฐานข้อมูลท้องถิ่นที่อยู่ในไดรฟ์เริ่มต้นของฉัน (Win7 C: ไดรฟ์) ฉันต้องการจัดเก็บข้อมูลในไดรฟ์ E: ไดรฟ์ภายนอกขนาดใหญ่ eSATA ฉันควรทำตามขั้นตอนอะไรบ้าง
34 mysql 

3
ประสิทธิภาพของ CPU นั้นเกี่ยวข้องกับเซิร์ฟเวอร์ฐานข้อมูลหรือไม่
นี่เป็นคำถามเชิงทฤษฎีอย่างแท้จริง สมมติว่าฉันมีแอปพลิเคชันที่ปรับใช้บนเซิร์ฟเวอร์หลายเครื่อง เครื่องถ่วงโหลด เซิร์ฟเวอร์แอพพลิเคชั่นหลายตัว / ปรับขนาดได้ เซิร์ฟเวอร์ฐานข้อมูล A (เดี่ยว) (ในขณะนี้) ในสองส่วนแรกฉันรู้ว่าต้องหาอะไร แต่เซิร์ฟเวอร์ฐานข้อมูลล่ะ ฉันควรมองหาฮาร์ดแวร์ชนิดใด ความถี่ซีพียูเกี่ยวข้องกับเซิร์ฟเวอร์ฐานข้อมูลหรือไม่ ซีพียูหลายคอร์มีความเกี่ยวข้องหรือไม่? RAM สำคัญกว่า CPU หรือไม่ PS: หากว่าฐานข้อมูลที่เลือกคือ MySQL หรือ PostgreSQL

5
เหตุใดจึงเลือกอย่างง่ายบน InnoDB 100x ช้ากว่าบน MyISAM
ฉันมีปัญหาค่อนข้างน่ารำคาญ ฉันต้องการใช้ INNODB เป็นเอ็นจิ้นฐานข้อมูลหลักของฉันและยอมแพ้กับ MyISAM เพราะฉันต้องการรุ่นเก่าสำหรับการใช้ galera-cluster เพื่อความซ้ำซ้อน ฉันคัดลอก (คำอธิบายด้านล่าง) newbb_postตารางเป็นตารางใหม่ที่เรียกว่าnewbb_innopostและเปลี่ยนเป็น InnoDB ขณะนี้ตารางเก็บ5,390,146ข้อมูลแต่ละรายการ การรันตัวเลือกเหล่านี้บนฐานข้อมูลที่เพิ่งเริ่มต้นใหม่ (ดังนั้นจึงไม่มีการแคชใด ๆ เกี่ยวข้องในจุดนี้!) ฐานข้อมูลให้ผลลัพธ์ต่อไปนี้ (ไม่แสดงผลลัพธ์ทั้งหมดโปรดทราบว่าฉันไม่ได้ขอให้ฐานข้อมูลเรียงลำดับผลลัพธ์): เลือก post.postid, post.attach จาก newbb_post เป็นโพสต์ WHERE post.threadid = 51506; . . | 5401593 | 0 | | 5401634 | 0 | + --------- + -------- + 62510 แถวในชุด (0.13 วินาที) …

5
ฉันจะออกแบบตารางความสัมพันธ์สำหรับมิตรภาพได้อย่างไร
ถ้าAเป็นเพื่อนBแล้วฉันควรเก็บค่าทั้งสองABและBAหรือหนึ่งก็พอ? ข้อดีและข้อเสียของทั้งสองวิธีคืออะไร นี่คือการสังเกตของฉัน: ถ้าฉันเก็บทั้งคู่ไว้ฉันต้องอัปเดตทั้งคู่เมื่อได้รับคำขอจากเพื่อน หากฉันไม่เก็บทั้งสองไว้ฉันก็พบว่ามันยากเมื่อต้องทำหลายอย่างJOINกับตารางนี้ ปัจจุบันฉันรักษาความสัมพันธ์ไว้ทางเดียว แล้วฉันควรทำอย่างไรในกรณีนี้? คำแนะนำใด ๆ?

4
วิธีที่ดีที่สุดในการอัพเกรดอินสแตนซ์ RDS ที่ผลิตคืออะไร
ฉันมีอินสแตนซ์ RDS MySQL ขนาดเล็กซึ่งเป็นส่วนหนึ่งของระบบการผลิตของฉันและฉันต้องการอัพเกรดเป็นอินสแตนซ์ขนาดกลางที่มี IOPS ที่ให้มา ในฐานะ DBA โรงเรียนเก่าฉันทราบเกี่ยวกับวิธี "เพิ่มทาส; เลื่อนระดับเป็นหลัก; เปลี่ยนลูกค้า" แต่ AWS สัญญาว่าจะให้บริการเส้นทางการอัปเกรดด้วยคลิกเดียวเช่น "อัปเกรดอินสแตนซ์" "เพิ่ม IOPS ที่จัดเตรียมไว้" ลองสิ่งนี้กับอินสแตนซ์ทดสอบ RDS การหยุดทำงานนานเกินไป IMHO: ประมาณ 5 นาทีสำหรับการอัพเกรดขนาดเล็ก -> ขนาดกลางและ 30 นาที (!!!) สำหรับการเปลี่ยนเป็น IOPS ที่ให้มา นี่เป็นพฤติกรรมปกติหรือไม่ มีวิธีใดบ้างที่จะเรียกใช้การอัปเกรดจาก RDS ที่ใช้งานจริงซึ่งไม่มีการหยุดทำงานหรือไม่ คุณแนะนำ "หยุดสร้างสแนปชอตคืนค่าจากสแน็ปช็อตไปเป็นอินสแตนซ์ที่ใหญ่กว่า" หรือไม่?
32 mysql  amazon-rds 

6
วิธีอัปเดต 10 ล้านแถวใน MySQL ตารางเดียวเร็วที่สุด
ใช้ MySQL 5.6 กับเครื่องมือจัดเก็บข้อมูล InnoDB สำหรับตารางส่วนใหญ่ ขนาดบัฟเฟอร์พูล InnoDB คือ 15 GB และดัชนี Innodb DB + มีขนาดประมาณ 10 GB เซิร์ฟเวอร์มี RAM 32GB และใช้งาน Cent OS 7 x64 ฉันมีตารางใหญ่หนึ่งตารางที่มีเร็กคอร์ดประมาณ 10 ล้านรายการ ฉันได้รับไฟล์ดัมพ์ที่อัปเดตจากเซิร์ฟเวอร์ระยะไกลทุก 24 ชั่วโมง ไฟล์อยู่ในรูปแบบ csv ฉันไม่สามารถควบคุมรูปแบบนั้นได้ ไฟล์นี้มีขนาด ~ 750 MB ฉันพยายามแทรกข้อมูลลงในตาราง MyISAM แบบแถวต่อแถวและใช้เวลา 35 นาที ฉันต้องใช้เพียง 3 ค่าต่อบรรทัดจาก 10-12 จากไฟล์และอัปเดตในฐานข้อมูล อะไรคือวิธีที่ดีที่สุดในการบรรลุสิ่งนี้ …

3
วิธีเพิ่มความเร็วคิวรีในตาราง 220 ล้านแถวขนาดใหญ่ (ข้อมูล 9 กิกะไบต์)
ปัญหา: เรามีเว็บไซต์โซเชียลที่สมาชิกสามารถให้คะแนนซึ่งกันและกันเพื่อความเข้ากันได้หรือการจับคู่ นี้user_match_ratingsตารางที่มีมากกว่า 220 ล้านแถว (9 ข้อมูลกิ๊กหรือเกือบ 20 กิ๊กในดัชนี) ข้อความค้นหาที่อยู่ในตารางนี้แสดงเป็นประจำใน slow.log (threshold> 2 วินาที) และเป็นข้อความค้นหาช้าที่บันทึกบ่อยที่สุดในระบบ Query_time: 3 Lock_time: 0 Rows_sent: 3 Rows_examined: 1051 "select rating, count(*) as tally from user_match_ratings where rated_user_id = 395357 group by rating;" Query_time: 4 Lock_time: 0 Rows_sent: 3 Rows_examined: 1294 "select rating, count(*) as tally …

3
วิธีที่แนะนำในการสำรองฐานข้อมูล MySQL / Amazon RDS ไปยัง S3 คืออะไร
ฉันมีสองวัตถุประสงค์นี้: หากต้องการสำรองข้อมูลนอกสถานที่ในกรณีที่เกิดปัญหาในระดับภูมิภาคกับ Amazon Web Services เพื่อคัดลอกข้อมูลการผลิตจากบัญชีการเรียกเก็บเงินการผลิตไปยังบัญชีการเรียกเก็บเงินเบต้า ขณะนี้ยังไม่ปรากฏว่า Amazon รองรับกรณีใช้งานทั้งสองกรณีนี้นอกกรอบ ฉันได้เห็น mysqldump และ xtrabackup (ดูโพสต์แบบฟอร์ม ) ที่กล่าวถึง ฉันได้เห็นกระบวนการที่ซับซ้อนมากขึ้น (เอกสารที่นี่ ) เซิร์ฟเวอร์ RDS ใหม่ในบัญชีการเรียกเก็บเงินต้นทาง (prod) จะถูกปั่นออกจากการสำรองข้อมูลล่าสุด อินสแตนซ์ EC2 ใหม่จะหมุนขึ้นที่มีการเข้าถึงเซิร์ฟเวอร์ RDS ในขั้นตอนที่ 1 mysqldump ใช้เพื่อสำรองข้อมูลของฐานข้อมูลนี้ สำรองข้อมูลถูกคัดลอกไปยังตำแหน่งนอกสถานที่ (S3?) ในบัญชีแยกต่างหากและ / หรือภูมิภาคเซิร์ฟเวอร์ RDS ใหม่จะหมุนตัว ดัมพ์ฐานข้อมูลถูกอิมพอร์ต เคล็ดลับและคำแนะนำได้รับการชื่นชม

3
เพื่อประสิทธิภาพที่สมบูรณ์ SUM จะเร็วขึ้นหรือ COUNT หรือไม่
invoice amount > $100นี้เกี่ยวข้องกับการนับจำนวนของระเบียนที่ตรงกับเงื่อนไขบางอย่างเช่น ฉันมักจะชอบ COUNT(CASE WHEN invoice_amount > 100 THEN 1 END) อย่างไรก็ตามนี่เป็นเพียงที่ถูกต้อง SUM(CASE WHEN invoice_amount > 100 THEN 1 ELSE 0 END) ฉันคิดว่า COUNT นั้นดีกว่าด้วยเหตุผล 2 ประการ: บ่งบอกถึงความตั้งใจซึ่งก็คือ COUNT COUNT อาจเกี่ยวข้องกับการi += 1ดำเนินการอย่างง่ายที่ไหนสักแห่งในขณะที่ SUM ไม่สามารถพึ่งพาการแสดงออกที่จะเป็นค่าจำนวนเต็มง่าย ใครบ้างมีข้อเท็จจริงเฉพาะเกี่ยวกับความแตกต่างของ RDBMS ที่เฉพาะเจาะจงหรือไม่

2
Amazon RDS สำหรับ MySQL และการติดตั้ง MySQL บนอินสแตนซ์ Amazon EC2
ที่ทำงานเราเป็นเจ้าภาพเว็บเซิร์ฟเวอร์ของเราทั้งหมดใน Amazon EC2 และมักจะมีฐานข้อมูล MySQL ที่ใช้ติดตั้งในกล่องเดียวกับเว็บเซิร์ฟเวอร์ Apache localhostของเราและการสื่อสารกับพวกเขาใน ตอนนี้เราต้องเผชิญกับความต้องการโยกย้ายฐานข้อมูลของเราไปยังเซิร์ฟเวอร์ของตัวเองสำหรับหนึ่งในระบบของเรา ฉันมีทางเลือกระหว่างสองวิธี: ใช้Amazon RDSหรือเพียงแค่เปิดตัวกล่องAmazon EC2ใหม่และติดตั้ง MySQL บน RDS ซึ่งเป็นบริการฐานข้อมูลเฉพาะที่จัดทำโดย บริษัท เดียวกันกับ EC2 ดูเหมือนว่าควรเป็นตัวเลือกที่ดีกว่าอย่างเห็นได้ชัด อย่างไรก็ตามเมื่อฉันดูการกำหนดราคาสำหรับสองตัวเลือก (ดูhttp://aws.amazon.com/ec2/pricingและhttp://aws.amazon.com/rds/pricing ) ดูเหมือนว่าเซิร์ฟเวอร์ RDS มีค่าใช้จ่ายเกือบ สองเท่าของเซิร์ฟเวอร์ EC2 สำหรับกล่องที่มีสเปคเดียวกัน เนื่องจากฉันสามารถจัดการการสำรองข้อมูลด้วยตนเองและ EC2 นั้นมีความสามารถในการเพิ่มขนาดอินสแตนซ์ตามที่ RDS ทำดังนั้นฉันไม่เห็นเหตุผลที่จะใช้ RDS แทน EC2 เลย ดูเหมือนว่าฉันอาจจะพลาดบางสิ่งบางอย่างที่ยิ่งใหญ่เพราะถ้าฉันพูดถูกไม่มีใครจะใช้ RDS ฉันพลาดอะไรไปบ้างและข้อดีของ RDS ในการติดตั้งฐานข้อมูลของคุณเองบนอินสแตนซ์ EC2 คืออะไร
31 mysql  amazon-rds 


9
รับอันดับของผู้ใช้ในตารางคะแนน
ฉันมีตาราง MySQL ง่าย ๆ ที่ฉันบันทึกคะแนนสูงสุด ดูเหมือนว่า: Id Name Score จนถึงตอนนี้ดีมาก คำถามคือฉันจะได้รับสิ่งที่ผู้ใช้อันดับได้อย่างไร ตัวอย่างเช่นผมมีผู้ใช้Nameหรือและต้องการที่จะได้รับตำแหน่งของเขาซึ่งแถวทั้งหมดเป็นลำดับจากมากไปน้อยสั่งสำหรับIdScore ตัวอย่าง Id Name Score 1 Ida 100 2 Boo 58 3 Lala 88 4 Bash 102 5 Assem 99 ในกรณีนี้Assemอันดับของเขาจะเป็น 3 เพราะเขาได้คะแนนสูงสุดอันดับที่ 3 แบบสอบถามควรส่งคืนหนึ่งแถวซึ่งมีอันดับที่จำเป็น (เท่านั้น)
31 mysql  rank 

2
ฟังก์ชั่น MySQL และหน้าต่าง
ดูเหมือนว่าMySQLไม่รองรับฟังก์ชั่นหน้าต่าง เช่นง่าย ๆ : COUNT(*) OVER() AS cntไม่ทำงาน สิ่งที่ฉันไม่แน่ใจคือถ้าสิ่งนี้นำไปใช้กับรุ่นเชิงพาณิชย์เช่นกัน (ฉันถือว่ารุ่นชุมชนเป็นชุดย่อยที่ จำกัด ) ถ้าไม่วิธีการหนึ่งที่จะแก้ไขคุณสมบัติที่ขาดหายไปนี้ได้อย่างไร

3
คีย์หลักของอักขระเทียบกับจำนวนเต็ม
ฉันกำลังออกแบบฐานข้อมูลด้วยตารางการค้นหาหลายตารางที่มีคุณลักษณะที่เป็นไปได้ของเอนทิตีหลัก ฉันกำลังคิดที่จะใช้คีย์ 4 หรือ 5 ตัวอักษรเพื่อระบุค่าการค้นหาเหล่านี้แทนที่จะเป็นจำนวนเต็มที่เพิ่มขึ้นโดยอัตโนมัติดังนั้นเมื่อฉันเก็บ ID แอตทริบิวต์เหล่านี้ไว้ในตารางหลักฉันจะเห็นค่าที่มีความหมายมากกว่าแค่ตัวเลขสุ่ม ความหมายด้านประสิทธิภาพของการใช้ฟิลด์อักขระเป็นคีย์หลักแทนที่จะเป็นจำนวนเต็มมีอะไรบ้าง ฉันใช้ MySQL ถ้าเรื่องนั้น [แก้ไข] ตารางค้นหาเหล่านี้มีการเพิ่มระเบียนใหม่นาน ๆ ครั้ง พวกเขาจะดูแลด้วยตนเองและคีย์ตามตัวอักษรจะถูกสร้างขึ้นด้วยตนเองเช่นกัน นี่คือตัวอย่าง: CUISINES ID Description ----- -------------- CHNSE Chinese ITALN Italian MXICN Mexican

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