jQueryTips by Tee++;

  • Home
  • Videos
  • jQueryTips's Fans

Coding like playing a piano.

Subscribe RSS

Search

Search

Sponsored

jQueryTips on Social

Followers

hide
Chainnnn Pang25441 Dexteri@n Ton KanexKane Supachai JustDoIt Rut petchy Tophit anndrew Webmaster

Categories

hide
  • Programing
  • Database
  • Framework
  • Mobile Development
    • Titanium Mobile
    • PhoneGap
  • Life

Tag Cloud

hide
PHP JavaScript MySQL XML Mobile jQuery CodeIgniter Hash php xml Debug Library Zend API Events Plugins Facebook Basic Registration Tool Twitter Search Swath Performance ffmpeg YouTube Web Service Yahoo! NoSQL MongoDB PhoneGap

Recent Posts

hide
  • ใครๆ ก็มี Utils เอางี้เราเพิ่ม Utils ให้กับ CodeIgniter กันบ้าง
  • แนะนำ JS.Class (A JavaScript class library)
  • PHP กับ OOP มาปูพื้นฐานกันเสียใหม่ก่อน
  • ประกาศข่าวสารจาก Admin
  • JSFIDDLE สุดยอด Tools สำหรับการ Debug การเขียนตัวอย่างโคด
  • Titanium Mobile + HTML + Native Scrolling
  • HTML to PDF ตัวไหนดี วันนี้ผมมีคำตอบ ...
  • ทำความรู้จักกับ JavaScript Pattern ในเชิงลึก
  • ผมบอกคุณแล้ว .... คนโง่ก็ Code ได้
  • วันนี้ มาออกแบบ Web Service ด้วย PHP กันเถอะ (CodeIgniter Version)

Recent Comments

hide
  • เยดดดด
  • มีตัวอย่าง CI แบบ เพียว ๆ ไหมครับ
  • ขอบคุณมากครับ เห็นแนวทางได้ชัดขึ้นจากตอนแรก ที่งงไปหมด ไม่รู้อะไรเป็นอะไร
  • ขอบคุณมากเลยครับท่าน....แหม่เพิ่มกำลังใจให้ผมได้เยอะเลย ตอนนี้กำลังฝึกงานอยู่ที่แห่งนึงในหาดใหญ่ พร้อมเด็กจากอีกสถาบันนึง 3 คน เราคิดว่าเรา…
  • Very good blog, I really like ~

Links

hide
  • OSCOOL
  • Architeture & Performance
  • Video and TV
  • Appcelerator
  • PhoneGap
  • Home
  •  » Blogs

MySQL::Merge Storage Engine

May 27, 2009 9:28:08 PM | 2 Comments | in Database | MySQL
พักนี้เริ่มมั่วไปใหญ่ละ ตอนที่เปิดเว็บ มาตั้งใจว่าจะเขียนแต่เรื่อง jQuery กับ Javascript แต่พักนี้ไหง มีทุกเรื่องเลยก็ไม่รู้ กลายเป็น บล๊อกโปรแกรมมิ่ง ไปไม่รู้ตัว แต่ขออีกทีน่า คนมันอยากเขียนนี่หว่า เดี๋ยวครั้งหน้ากลับมา เขียนเรื่อง jQuery ต่อ

วันนี้ที่จะมาเขียนก็ฉีกแนวไปจากเดิมอีกละ จะมาพูดถึงเรื่อง Storage Engine ตัวนึงที่มี ใน MySQL 5.0 ขึ้นไป นั่นก็คือ merge storage engine (MRG_MyIsam) นั่นเอง เป็นการทำให้ table หลายๆ ตัว ถูก มองเห็นเป็นตัวเดียวกัน

ก่อนอื่นผมสร้าง DB ขึ้นมาทำการทดสอบชื่อว่า merge_test

จากนั้นผมสร้่าง table ขึ้นมา 2 ตัว ชื่อว่า table_a, table_b

CREATE TABLE `merge_test`.`table_a` (

`id` INT( 10 ) NOT NULL AUTO_INCREMENT ,

`data` VARCHAR( 25 ) NOT NULL ,

PRIMARY KEY ( `id` )

) ENGINE = MYISAM ;



CREATE TABLE `merge_test`.`table_b` (

`id` INT( 10 ) NOT NULL AUTO_INCREMENT ,

`data` VARCHAR( 25 ) NOT NULL ,

PRIMARY KEY ( `id` )

) ENGINE = MYISAM ;


Engine ต้องเป็น MyIsam เท่านั้นนะครับ

จากนั้นผม ก็ทำการ ทดสอบ insert ข้อมูล ลงไปใน table_a ก่อน ดังนี้
INSERT INTO `merge_test`.`table_a` (`id`, `data`) VALUES (NULL, 'data for table a');


แล้วต่อมาอีก ผมก็สร้าง merage table มามีชื่อว่า table_all
CREATE TABLE `table_all` (

  `id` int(10) NOT NULL AUTO_INCREMENT,

  `data` varchar(25) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MERGE UNION=(table_a,table_b) INSERT_METHOD=LAST


โดยต้องมี Structure เหมือนกับ 2 table ด้านบนไม่ผิดเพี้ยน จากนั้นกำำหนด Engine เป็น merge ซะ และใช้คำสั่ง Union ในการเลืกว่าจพ เชื่อม table ไหน จากนั้น กำหนด ให้ data insert อยู่ที่ last table นั่นก็คือ table_b นั่นเอง

จากนั้นมาลอง insert ข้อมูลลง table_all
INSERT INTO `merge_test`.`table_all` (`id`, `data`) VALUES (NULL, '555 test');


จะเห็นได้ว่า table_all จะเอา data ของ ทั้ง 2 table มาอยู่ในตัวเอง ดังภาพด้านล่าง

table_a


table_b


table_all


จากภาพเราก็จะเห็นได้ว่า data ที่เรา insert table_all จะไป ตกอยู่ที่ table_b ด้วย โดยที่ auto increment ไม่ผิดเพี้ยนไป

ก็คือ table_all จะเป็นตัว map data เท่านั้น โดยที่ ไม่ได้ทำหน้าที่เป็นตัวจัดเก็บจริงๆ
*** ถ้ามี data เยอะๆ ไปลองสังเกตุไฟล์ table_all.frm ได้ว่า ไม่มีขนาดเพิ่มขึ้นตามจำนวน data ***

ทีนี้ เราก็จะสามารถบริหาร select, insert, delete, update โดยใช้ table_all เท่านั้น โดยไม่ต้องไปสนใจว่า data จะอยู่ที่ table_a หรือ table_b

วิธีนี้ไม่เหมือนกับการทำ Partition นะครับ เพราะว่า Data ไม่สามารถกำหนดในลักษณะั hasing ได้ ต้องเลือกเอาเลย ว่าจะ insert ลง table ไป "Last or First"

เท่าที่ลองหาข้อมูลมา วิธีนี้ไม่ได้ช่วยเรื่อง performance เท่าไหร่ แต่ว่า เป็นการ merge table เพื่อนำมาวิเคราะห์ข้อมูลมากกว่า แตกต่างจาก partition อย่าสับสนกันนะครับ


เอาล่ะ จบ เรื่อง MySQL เดี๋ยวครั้งแน่ jQuery แน่ๆ 555+

twitter stumbleupon delicious digg facebook

2 comments

Add comment Load previous All comments

Leave a comment

Post Comment

Powered by OSCOOL. You may view this on RSS or ATOM.

OSCOOL

  • Twitter
  • Facebook
  • Next