go to http://oracle.in.th

Wednesday, December 1, 2010

National Character Set แบบ AL16UTF16 กับ UTF8 ต่างกันอย่างไร?

ห่างหายไปนานกับการเขียนบทความลงบล็อค oracle ของเรา ขอต้อนรับต้นเดือนสุดท้ายของปี 2010 นี้ด้วยทริก เล็กๆน้อยๆ นะครับ

วันนี้มีเกร็ดเล็กๆ น้อยๆ ที่เป็นประโยชน์ซึ่งเกี่ยวกับการสร้าง Database โดยใช้ DBCA หรือ Database Configuration Assistant มาให้ทุกท่านได้อ่านกันนะครับ

...ผมเชื่อว่า หลายๆท่านที่กำลังอ่านอยู่ตอนนี้ ต้องเคยได้ลองติดตั้ง Oracle Database หรือ เคยสร้าง Database มากันบ้างแล้วล่ะ ซึ่งขั้นตอนในการสร้าง Database นั้นมันก็ไม่ได้ยากมากมาย เพียงแค่ตั้งค่าให้ถูกต้องเท่านั้นเอง ซึ่งผมนั้นก็ได้ลองติดตั้งด้วยตัวผมเองแล้วเหมือนกัน แต่มีขั้นตอนนึงที่ทำให้ผมชะงักขึ้นมาว่า ...เอ๊ะ จะเลือกอันไหนดีล่ะ ? นั่นคือ ตอนที่ให้ตั้งค่า Database Character set โดยมี National Character Set แบบ AL16UTF16 กับ UTF8 ให้เลือก (ดูตามรูปได้เลยนะครับ)


เอาเป็นว่า แทนที่จะมานั่งเดาเอา ผมก็ search หาเอาซะเลย แล้วดูว่า National Character Set แบบ AL16UTF16 กับ UTF8 มันมีข้อแตกต่างกันอย่างไร?

AL16UTF16
  1. ถ้าข้อมูลเป็นภาษาเอเชีย จะประหยัดพื้นที่กว่า UTF8 ซึ่งจะดีในแง่ของพื้นที่ในฮาร์ดดิสก์ และ I/O แต่ถ้าข้อมูลส่วนใหญ่เป็นภาษาทางยุโรปใช้ UTF8 ดีกว่าเพราะประหยัดพื้นที่กว่า
  2. Oracle มอง AL16UTF16 เป็น fixed-width characters ดังนั้นจะ process เร็วกว่า
  3. ความกว้างสูงสุดของ NCHAR และ NVARCHAR คือ 1000 และ 2000 ตัวอักษร ซึ่งการันตี เพราะเป็น fixed-width
...มาดูฝั่ง UTF8 กันบ้าง

UTF8
  1. ถ้าข้อมูลเป็นภาษาทางยุโรป โดยปกติจะประหยัดพื้นที่กว่า AL16UTF16 (เนื่องจากภาษาทางยุโรปอยู่ในลำดับต้นๆของ Unicode ซึ่งสามารถแทนได้ด้วยข้อมูลเพียง Byte เดียว) และให้ประสิทธิภาพดีกว่าในการ Process
  2. ความยาวสูงสุดของ NCHAR และ NVARCHAR คือ 2000 และ 4000 ซึ่งดูเหมือนจะมากกว่า AL16UTF16 แต่ไม่การันตี เนื่องจาก UTF8 เป็น variable width ถ้าเป็น Character ที่ใช้ Byte เดียวก็จะได้ถึง 4000 bytes แต่ถ้าเป็น Character ที่ใช้ 3 Bytes ก็จะมีได้สูงสุดแค่ 4000/3 ตัวอักษร
...นั่นก็คือข้อแตกต่างของแต่ละตัว ดังนั้นก่อนที่ท่านผู้อ่านทุกท่านจะ set ค่าในการสร้าง database ลองดูรายละเอียดซักนิดนะครับ อย่าเพิ่งกด Next ๆๆ อย่างเดียวนะครับ ;)

อ้างอิง
ข้อเขียนนี้ช่วยฉัน:  

No comments:

Post a Comment