Posts Tagged ‘ MySQL

SQL:Structured Query Language

Note ไว้เพื่อเตือนความจำ เนื่องจากมีโอกาสได้ไปอบรม การใช้งาน SQL มา SQL แบ่งเป็นกลุ่มได้ 3 กลุ่มดังนี้
1. DDL (Data Definition Language) เป็นคำสั่งที่ใช้ในการจัดการโครงสร้างตาราง เช่น
- CREATE
- DROP
- ALTER
2. DCL (Data Control Language) เป็นคำสั่งที่ใช้ในการจัดการสิทธิ์ การใช้งานต่างๆ เช่น
- GRANT
- REVOKE
3. DML (Data Manipulation Language) เป็นคำสั่งที่ใช้ในการ จัดการข้อมูลในตาราง เช่น ดึงข้อมูลมาแสดง ลบ แก้ไข เช่น
- SELECT
- INSERT
- DELETE
- UPDATE
สรุปคร่าวๆตามเอกสารที่อาจารย์ สอนมาครับ

ข้อมูลอ้างอิง :
What are the difference between DDL, DML and DCL commands?

[MySQL] MyISAM กับ InnoDB

ต่อจากตอนที่แล้ว พอมาใช้ PDO แล้วชีวิตมันก็ดีขึ้นตามลำดับ ที่ควรจะเป็น แต่มาติดปัญหาเรื่อง Transaction นิดหน่อย เนื่องมาจากตารางที่ออกแบบมานั้น (คนอื่นออกแบบมาอีกที) ใช้ engine เป็น MyISAM ซึ่งเท่าที่อ่านมาคือมันไม่รองรับการทำ transaction ผมไม่รู้เสียเวลา่ตั้งนานว่าเขียน Code ผิดตกหล่นตรงไหนนี่ สั่ง rollback ก็แล้ว ข้อมูลก็ยังมาอยู่ดี จนสุดท้ายลองไปดูโครงสร้างของ table โอ้ๆๆ ถึงบางอ้อเลย เลยลองเปลี่ยนมาเป็น InnoDB แล้วทุกอย่างก็เป็นไปอย่างที่คิดไม่มีผิด

ISAM (MyISAM) ซึ่งมีความรวดเร็วในการอ่านและเขียนสูง เนื่องจากมีการจัดเก็บไว้ในรูปแบบของแฟ้มข้อมูล ซึ่งรองรับการอ่านข้อมูลพร้อมๆ กันได้ (เหมาะสำหรับ Web Application) แต่อาจจะมีปัญหาเมื่อใช้งานกับระบบที่ต้องมีการอ่าน/เขียน ข้อมูลในตารางเดียวกัน พร้อมๆ กันที่สำคัญ ฐานข้อมูลประเภท MyISAM จะมีปัญหาเรื่อง Index เสีย และ Data Corrupt บ่อยมาก หากใช้งานใน OS ที่เป็น Windows และมีการ Shutdown อย่างไม่ถูกต้อง ซึ่งทำให้ผู้ดูแลระบบต้องมีการซ่อมแซม (repair table bad_table) ตารางทีมีปัญหาอยู่เรื่อยๆ
InnoDB ข้อดีคือ รองรับการทำ Transaction รองรับการอ่านและเขียน พร้อมๆ กันได้ดีกว่าฐานข้อมูลประเภท MyISAM และยังมีระบบ Auto Data Recovery หากมีการ shutdown โดยไม่เหมาะสม (ไฟดับ)ซึ่งในการใช้งานผู้ใช้สามารถเลือกได้ว่าจะให้ตารางใดเป็นประเภท InnoDB หรือ MyISAM ขึ้นอยู่กับความเหมาะสม (ว่าจะเลือกความเร็ว หรือ ประสิทธิภาพ)
ที่มา : http://joezine.exteen.com/20060305/myisam-innodb

หมายเหตุ : ที่หาไม่เจอสักที เพราะปกติผมจะให้ Default engine เป็น InnoDB เลยไม่เคยเจอปัญหานี้
อ้างอิง/แหล่งข้อมูล
InnoDB vs MyISAM vs Falcon benchmarks – part 1

คำสั่ง Backup และ Restore mysql

การ Backup ฐานข้อมูล

mysqldump -u[user] -p[password] -h[host] [dbnam] > [path to sql]

การ Restore ฐานข้อมูล

mysql -u[user] -p[password] -h[host] [dbname] < [path to sql]

-u : username
-p : password (ห้ามกรอกในบรรทัด ให้เว้นไว้ เมื่อ กด enter ระบบจะให้ใส่เอง)
-h : host หรือ ip เครื่อง server (กรอกหรือไม่ก็ได้ หากใช้ localhost)

สำหรับ option อื่นในคำสั่ง mysqldump สามารถดูได้จาก

mysqldump --help

ตัวอย่าง
ต้องการสำรองฐานข้อมูลชื่อ dbtest ไปเว็บยัง C:\MySQL\simple.sql จะใช้คำสั่งดังนี้

C:\mysql5.0\bin>mysqldump -uroot -pjava -hlocalhost dbtest > C:\MySQL\simple.sql

ข้อควรจำ :
ในการใช้คำสั่ง mysqldump เพื่อทำการ backup และ mysql เพื่อ restore ให้ใช้คำสั่งทั้งสองโดยที่ไม่ต้อง Login เข้า console ของ database ครับ
อ้างอิง :
mysqldump — A Database Backup Program