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

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

4
MySQL - เปลี่ยนตารางเพื่อใส่ UUID โดยอัตโนมัติ
ตกลงฉันรู้ว่าฉันเคยทำมาก่อน แต่ฉันไม่สามารถคิดออกมาได้ ฉันสร้างตาราง หนึ่งในคอลัมน์นั้นมีป้ายกำกับ "LogID" ซึ่งเป็นคีย์หลักด้วย ฉันจะแก้ไขเพื่อให้คอลัมน์นี้สร้าง UUID สำหรับแต่ละรายการใหม่ได้อย่างไร ขอบคุณ
14 mysql 

2
เขียนคิวรีช้าเพื่อทดสอบการบันทึกคิวรีช้า
มีแบบสอบถามง่ายๆที่จะใช้เวลา> 2 วินาทีเพื่อให้ฉันสามารถทดสอบ logger แบบสอบถามช้า? ฉันกำลังมองหาสิ่งที่ต้องการคำสั่งซ้ำทั่วไปหรือซ้ำแล้วซ้ำอีก
14 mysql  slow-log 

2
อะไรคือสิทธิพิเศษที่สมเหตุสมผลในการให้สิทธิ์ผู้ใช้ทั่วไป? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันพบรายการสิทธิพิเศษให้โดย MySQLจะเป็นบิตครอบงำ ฉันไม่แน่ใจว่าใครควรได้รับสิทธิพิเศษอะไรบ้าง ในใจของฉันมีผู้ใช้ทั่วไปสามคนสำหรับสถานการณ์ของฉัน: root developer application rootเป็นการอธิบายตนเอง สำหรับdeveloperผู้ใช้นี้จะต้องสามารถเข้าถึงฐานข้อมูลใด ๆ ได้อย่างง่ายดายทำการปรับเปลี่ยนเป็นต้นสำหรับผู้เริ่มฉันตั้งค่าผู้ใช้นี้เป็นชุดสิทธิ์นี้: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON applicationมีชุดที่ จำกัด ยิ่งขึ้น …

3
MySQL: เกิดข้อผิดพลาดในการอ่านแพ็กเก็ตการสื่อสาร
ฉันได้รับคำเตือนนี้ใน mysql [Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets) ฉันเคยผ่านหลายหัวข้อใน google และตามคำแนะนำฉันเพิ่มขึ้นmax_allowed_packetจาก128 to 512 to 1024ยังคงพฤติกรรมเดียวกัน ฉันกำลังใช้ Drupal 7 และใช่มีจำนวนมากของชนิดข้อมูลหยด แต่1024 Mbของmax_allowed_packetควรจะเพียงพอในความคิดของฉัน วิธีหลีกเลี่ยงอื่น ๆ วิธีเอาชนะคำเตือนนี้หรือไม่ แก้ไข: เพิ่มการตั้งค่าบางอย่างตามคำแนะนำ / คำตอบของ @ Rolando ฉันยังคงได้รับคำเตือนเดิม config mysql ของฉันมีลักษณะเช่นนี้: [client] port = 3306 socket …
14 mysql  innodb 

2
การนับแถวจากแบบสอบถามย่อย
ง่าย: ฉันต้องการนับจำนวนแถวจากแบบสอบถามย่อย โปรดทราบว่าสถานะนั้นไม่ว่าโฮสต์จะออนไลน์หรือไม่ รหัสไม่ถูกต้อง SELECT COUNT(ip_address) FROM `ports` ( SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ) อธิบาย แบบสอบถามแรกเมื่อรันด้วยตนเองจะส่งคืนสิ่งนี้: SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ip_address 192.168.1.1 192.168.1.2 192.168.1.248 192.168.1.251 192.168.1.254 เคียวรีที่สองรันด้วยตนเองส่งคืนสิ่งนี้: SELECT COUNT(ip_address) FROM `ports` 17 คำถาม ฉันต้องการทราบวิธีนับรายการที่อยู่ IP 5 รายการนั้น ฉันกำลังค้นหาวิธีแก้ไขปัญหาแบบออนไลน์ที่เป็นไปได้ทางออนไลน์และเพิ่งเริ่มรู้สึกหงุดหงิดดังนั้นฉันจึงถามผู้เชี่ยวชาญ

2
หากมีอยู่แล้วปรับปรุงอื่นแทรก
ฉันพยายามที่จะสร้างSTORED PROCEDUREที่จะนำมาใช้ในตารางที่เรียกว่าUPDATE machineตารางนี้มีคอลัมน์ที่สาม ( machine_id, machine_nameและreg_id) ในตารางข้างต้นreg_id( INT) machine_idเป็นคอลัมน์ที่มีค่าสามารถเปลี่ยนแปลงได้สำหรับ ฉันต้องการกำหนดQUERY/ PROCEDUREเพื่อตรวจสอบว่ามีreg_idอยู่แล้วในตารางนั้น หากเป็นเช่นนั้นแสดงUPDATEว่าแถวนั้นมิฉะนั้นINSERTเป็นแถวใหม่ ใครบางคนได้โปรดช่วยให้ผมเขียนว่าQUERY/ PROCEDURE?
14 mysql 

4
MySQL: จะสร้างคอลัมน์ได้อย่างไรถ้าไม่มีอยู่?
ฉันกำลังพยายามสร้างคอลัมน์สำหรับตารางของฉันหากไม่มีอยู่จริง ฉันค้นคว้ามาเยอะ แต่ยังหาทางออกไม่ได้ นี่เป็นไปได้จริง ๆ ที่จะสร้างคอลัมน์แบบมีเงื่อนไขหรือไม่

1
MySQL มุ่งมั่นที่จะไม่เห็นข้อมูลเพื่อเลือกแบบสอบถาม
บริบท: เฟรมเวิร์กที่ใช้คือ Spring และเคียวรีทั้งหมดรันด้วย JdbcTemplate เซิร์ฟเวอร์ Mysql คือ 5.6.19 tableเป็นInnoDB tableและค่าเริ่มต้นเหมือนauto commitและระดับการแยกทำซ้ำอ่านเป็นชุด ปัญหา : Insertเกิดขึ้นภายในธุรกรรมและselectที่อ่านข้อมูลเดียวกันที่แทรกไว้ไม่เห็นข้อมูล selectวิ่งหลังจากinsertและหลังการทำธุรกรรมมีinsertcommited ฉันได้เปิดใช้งาน bin log รวมถึง log ทั่วไปใน mysql แล้ว บันทึกที่เกี่ยวข้องด้านล่าง ถังเข้าสู่ระบบ: SET TIMESTAMP=1438265764/*!*/; BEGIN /*!*/; # at 249935389 #150730 14:16:04 server id 1 end_log_pos 249935606 CRC32 0xa6aca292 Query thread_id=40 exec_time=0 error_code=0 SET TIMESTAMP=1438265764/*!*/; insert into …

5
ตารางคำสั่งอีคอมเมิร์ซ ประหยัดราคาหรือใช้ตารางการตรวจสอบ / ประวัติ?
ฉันออกแบบคีมาอีคอมเมิร์ซแรกของฉัน ฉันได้อ่านเรื่องนี้มาระยะหนึ่งแล้วและสับสนเล็กน้อยเกี่ยวกับความสัมพันธ์ระหว่างorder_line_itemกับproduct productสามารถรับการสั่งซื้อ มันมีรายละเอียดที่แตกต่างกัน unit_priceแต่ที่สำคัญที่สุดคือ order_line_itemมีคีย์ต่างประเทศไปproduct_idซื้อที่quantityซื้อและunit_priceที่จุดในเวลาลูกค้าที่ซื้อสินค้า สิ่งที่ฉันได้อ่านส่วนใหญ่บอกว่าควรเพิ่มunit_priceon order_line_item(อย่างชัดเจนโดยไม่อ้างอิงผ่านproduct_id) สมเหตุสมผลเนื่องจากร้านค้าสามารถเปลี่ยนแปลงราคาในอนาคตซึ่งจะทำให้การรายงานคำสั่งซื้อการติดตามความสมบูรณ์และอื่น ๆ สิ่งที่ฉันไม่เข้าใจคือทำไมบันทึกโดยตรงunit_priceไปยังค่าorder_line_itemหรือไม่ การสร้างตารางการตรวจสอบ / ประวัติจะเป็นการดีกว่าการสร้างตารางการunit_priceเปลี่ยนแปลงproductหรือไม่? เมื่อมีการorder_line_itemสร้างคีย์ต่างประเทศของproduct_auditตารางจะถูกเพิ่มและสามารถดึงราคา (โดยอ้างอิง) จากที่นั่น ดูเหมือนว่าฉันจะมีข้อดีหลายอย่างในการใช้วิธีนี้ (การทำซ้ำของข้อมูลน้อยลง, ประวัติการเปลี่ยนแปลงราคาเป็นต้น) ดังนั้นทำไมจึงไม่ใช้บ่อยกว่านี้ ฉันยังไม่เจอตัวอย่างของสคีมาอีคอมเมิร์ซที่ใช้วิธีการนี้ฉันทำอะไรหายหรือเปล่า UDPATE: ดูเหมือนว่าคำถามของฉันที่เกี่ยวข้องกับการเปลี่ยนแปลงอย่างช้าๆมิติ ฉันยังคงสับสนอยู่ว่าในขณะที่การเปลี่ยนมิติช้าเกี่ยวข้องกับคลังข้อมูลและ OLAP ดังนั้นชนิดการเปลี่ยนแปลงมิติช้าสามารถนำไปใช้กับฐานข้อมูลธุรกรรมทางธุรกิจหลักของฉัน (OLTP) ได้หรือไม่ ฉันสงสัยว่าฉันกำลังรวมแนวคิดจำนวนมากเข้าด้วยกันหรือไม่

3
ตาราง MEMORY ชั่วคราวจะคงอยู่นานแค่ไหนถ้าฉันไม่ทำมัน (MySQL)
ฉันใช้โพรซีเดอร์ที่จัดเก็บแบบเรียกซ้ำใน MySQL เพื่อสร้างตารางชั่วคราวที่เรียกว่าid_listแต่ฉันต้องใช้ผลลัพธ์ของโพรซีเดอร์นั้นในแบบสอบถามแบบติดตามผลดังนั้นฉันจึงไม่สามารถDROPใช้ตารางชั่วคราวภายในโพรซีเดอร์ ... BEGIN; /* generates the temporary table of ID's */ CALL fetch_inheritance_groups('abc123',0); /* uses the results of the stored procedure in the WHERE */ SELECT a.User_ID FROM usr_relationships r INNER JOIN usr_accts a ON a.User_ID = r.User_ID WHERE r.Group_ID = 'abc123' OR r.Group_ID IN (SELECT * FROM …

2
อะไรคือข้อเสียของการใช้ Galera Cluster แทน Master / Slave Replication
อะไรคือข้อเสียของการใช้ Galera Cluster แทน Master / Slave Replication ปกติ? เวลาหน่วง 0 ทาสของ Galera, การจำลองแบบซิงโครนัสและไม่มีจุดความล้มเหลวจุดเดียวจึงน่าดึงดูดใจมากแล้วทำไมกลุ่ม Galera ถึงไม่ธรรมดา

2
การเพิ่มดัชนีไปยังตาราง mysql ขนาดใหญ่
ฉันมีโต๊ะ | base_schedule_line_items | สร้างตารางbase_schedule_line_items( idint (10) unsigned NOT NULL AUTO_INCREMENT, installmentint (10) unsigned NOT NULL, on_dateวันที่ NOT NULL, actual_dateวันที่ DEFAULT NULL, payment_typeint (11) NOT NULL, scheduled_principal_outstandingทศนิยม (65,0) NOT NULL, scheduled_principal_dueทศนิยม (65,0) ไม่เป็น NULL, scheduled_interest_outstandingทศนิยม (65,0) ไม่เป็น NULL, scheduled_interest_dueทศนิยม (65,0) ไม่เป็น NULL, currencyint (11) ไม่เป็น NULL, วันที่และเวลา updated_atไม่เป็นค่าเริ่มต้น '2013-01-06 14:29:16', …

1
วิธีการประเมินการดำเนินงาน I / O ที่ดำเนินการโดยแบบสอบถาม MySQL?
ใน RDS ของ Amazon คุณต้องจ่ายประมาณ $ 0.10 ต่อ 1 ล้านคำขอ I / O ฉันสังเกตเห็นคำขอ I / O จำนวนมาก (เป็นแสน) สำหรับฐานข้อมูลปริมาณการใช้งานที่ต่ำมาก เมื่อเห็นสิ่งนี้ฉันได้ทำการวิจัยเพิ่มเติมและพบคำถามนี้ซึ่งอธิบายว่าสำหรับเว็บไซต์ผู้ใช้ 6,000 แห่งเขาได้สร้างคำขอ I / O 800 ล้านต่อเดือนซึ่งจะทำให้เขาต้องเสียเงินราว ๆ $ 80 / เดือน ดังนั้นฉันต้องการทราบล่วงหน้าว่าจะมีการดำเนินการแบบสอบถาม I / O MySQL จำนวนเท่าใดและจะเพิ่มประสิทธิภาพ / ย่อเล็กสุดได้อย่างไร มีวิธีใดที่จะประมาณจำนวนการดำเนินการของ I / O ที่แบบสอบถามจะดำเนินการและกฎทั่วไปที่ฉันสามารถปฏิบัติตามเพื่อให้ต่ำที่สุดเท่าที่เป็นไปได้
13 mysql 

3
ปรับเปลี่ยนตารางทั้งหมดในฐานข้อมูลด้วยคำสั่งเดียว
มีคำสั่งเดียวหรือหนึ่งบรรทัดเพื่อแก้ไขตารางทั้งหมดภายในฐานข้อมูล ฉันต้องการออกคำสั่งนี้ในทุกตารางภายในฐานข้อมูล: ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8; วัตถุประสงค์ของฉันคือการแก้ไขชุดอักขระจาก latin1 เป็น utf8 เป็นตารางทั้งหมด ปรับปรุง: RDBMS คือ MySQL

1
ข้อใดดีกว่า: หลายเงื่อนไขเข้าร่วมหรือหลายเงื่อนไข
ฉันพยายามที่จะเปรียบเทียบคำถามที่สอง: แบบสอบถาม 1: SELECT a,b,c,d,e FROM tableA LEFT JOIN tableB ON tableA.a=tableB.a WHERE tableA.b=tableB.b AND tableA.c=tableB.c AND tableA.d=tableB.d AND tableA.e=tableB.e แบบสอบถาม 2: SELECT a,b,c,d,e FROM tableA LEFT JOIN tableB ON tableA.a=tableB.a AND tableA.b=tableB.b AND tableA.c=tableB.c AND tableA.d=tableB.d WHERE tableA.e=tableB.e ฉันถูกต้องหรือไม่ที่จะบอกว่าคำค้นหาทั้งสองนี้ให้ผลลัพธ์เหมือนกันหรือไม่ นอกจากนี้ถูกต้องหรือไม่ที่จะบอกว่าแบบสอบถามแรกสร้างตารางที่ใหญ่กว่าเพื่อทำWHEREเงื่อนไขที่ใหญ่กว่า ขณะที่กรณีที่สองเรามีตารางสร้างขนาดเล็กที่เรียบง่ายWHEREที่ใช้แล้ว สมมติว่าผลลัพธ์เหมือนกันควรเลือกแบบสอบถามใด มีปัญหาเรื่องประสิทธิภาพที่ชัดเจนหรือไม่?

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