บทความ SQL Server

เตรียมพร้อมก่อนอ่าน Execution Plan
มีคนถามเข้ามาพอสมควรเวลาที่ผู้เขียนแสดง Query Execution Plan และวิเคราะห์ประสิทธิภาพให้ฟัง ทั้งในหลักสูตรที่ผู้เขียนบรรยายหรือสรุปผลประสิทธิภาพให้ลูกค้าฟัง ส่วนใหญ่อยากทราบว่ารายละเอียดของแต่ละตัวดำเนินการที่แสดงหมายถึงอะไร ผู้เขียนก็อยากจะเล่ามันทุกตัวแต่บางครั้งมันเล่ายากมาก เพราะหลายๆ ตัวต้องรู้ถึงโครงสร้างตารางทั้งแบบ Rowstore และ Columnstore ต้องรู้ถึงโครงสร้าง Indexes ทั้งแบบ Rowstore และ Columnstore เช่นกัน อีกทั้งยังต้องเข้าใจลำดับการประมวลผลของคำสั่ง เข้าใจถึงการเกิด Parallelism จิปาถะไปหมด ผู้เขียนขอเริ่มจากการทำความเข้าใจขั้นตอนการประมวลผลคิวรี่กันก่อนดีกว่า

ตั้งค่าตาม Best Practice ทันทีตั้งแต่ตอนติดตั้ง Microsoft SQL Server 2019
ผู้เขียนติดตาม Microsoft SQL Server 2019 จาก Community Technology Previews (CTPs) จนตอนนี้ออก Release Candidate (RC) แรกออกมาแล้ว สิ่งหนึ่งที่ผู้เขียนพอใจมากคือมีการตั้งค่าระดับ Instance ตาม Best Practice ที่ควรจะเป็นให้ตั้งแต่ตอนติดตั้งเลย ดังนี้

การสืบค้นตามช่วงเวลา
นี่ก็เป็นอีกหนึ่งบทความใน “ซีรีย์คิวรี่ตามคำขอ” เพราะได้รับคำถามมา ก่อนอื่นผู้อ่านพบว่ามีผู้พัฒนาจำนวนไม่น้อยเก็บข้อมูล datetime เป็น string เพราะอาจไม่ชำนาญในการจัดการข้อมูล datetime เลยสตาฟมันไว้ในรูปแบบ string แทน ซึ่งกลายเป็นภาระในการสืบค้นเพราะเมื่อต้องการนำมาใช้ประโยชน์ก็ต้องหาทางสกัดข้อมูลจาก string มาเป็น datetime ก่อนอยู่ดี

การหาวันเริ่มต้นและวันสุดท้ายของเดือนปัจจุบัน
บทความนี้ผู้เขียนขอเรียกเป็น “ซีรีย์คิวรี่ตามคำขอ” เพราะผู้เขียนได้รับการสอบถามถึงการสืบค้นวันสุดท้ายของเดือนปัจจุบัน ทั้งที่ Microsoft SQL Server นั้นมีฟังก์ชั่น EOMONTH (End of Month) มาตั้งแต่เวอร์ชั่น 2012

พัฒนาการของ Query Store
ตั้งแต่ได้เขียนบทความ “รู้จัก Query Store บน SQL Server 2016” เอาไว้ก่อนหน้านี้ แล้วได้เว้นช่วงไปพอสมควร ปัจจุบัน Microsoft SQL Server ใกล้จะออกเวอร์ชั่น 2019 ในเร็ววันนี้ มาดูกันว่า Query Store เปลี่ยนไปจากเดิมมากแค่ไหนกัน

รู้จักกับโครงสร้างข้อมูล แบบ Dimensional Model
Microsoft ได้ออกแบบผลิตภัณฑ์ Microsoft SQL Server Integration Service ให้สามารถสกัดข้อมูลจากหลายแหล่งหลายโครงสร้าง (schema) แล้วมีเครื่องไม้เครื่องมือในการแปลงข้อมูลเหล่านั้นไปสู่โครงสร้าง (schema) แบบ Dimensional Model ของ Ralph Kimball ผู้อ่านสามารถติดตามหนังสือในเครือ Kimball Group ได้จาก http://www.kimballgroup.com

การสร้าง Data Model ด้วย Microsoft SQL Server Analysis Service และการเรียกใช้
Microsoft SQL Server Analysis Service เป็นผลิตภัณฑ์สำหรับจัดการ Data Model ระดับ Enterprise ซึ่งแบ่งได้เป็น 2 ประเภทดังนี้ - Multidimensional Data Model ซึ่งเป็น โครงสร้างข้อมูลแบบ OLAP (cubes, dimensions, measures) - Tabular Data Model ซึ่งเป็น โครงสร้างข้อมูลแบบ Relational (model, tables, columns)

ข้อมูลชนิด Datetime บน Microsoft SQL Server
ผู้เขียนเห็นว่ามีผู้ใช้งาน Microsoft SQL Server จำนวนมากที่เข้ามาอบรมกับผู้เขียน ทำการจัดเก็บข้อมูลเกี่ยวกับวันและเวลาเอาไว้เป็นตัวหนังสือ เพียงเพราะหวังจะสตัฟฟ์มันไว้ คือเห็นตอนกรอกอย่างไร จัดเก็บไว้อย่างนั้น เรียกขึ้นมาดูก็สบายใจเพราะมันก็อยู่ของมันอย่างนั้น

การสร้าง Data Model บน Power BI เองไม่ผ่าน Microsoft SQL Server Analysis Service
หากเราไม่พึ่งพา Microsoft SQL Server Analysis Service ในการเตรียม Data Model ไว้ล่วงหน้า Power BI มีความสามารถในการสร้าง และใช้งาน Data Model บนตัวของมันเอง เพราะถูกออกแบบให้เป็นเครื่องมือแบบ Self Service(ชงเอง กินเอง)

Microsoft SQL Server 2017 Datasheet (4 )
การนำเอา Microsoft SQL Server 2017 Datasheet มาเล่า และทดลองให้เห็นผ่านตัวอย่างเล็ก ๆ ก็ดำเนินมาถึงตอนสุดท้ายกันแล้ว ผู้เขียนจะขอเล่าถึงส่วนสุดท้ายใน Datasheet ที่จั่วหัวไว้เป็น “End-to-end mobile BI on any device” ซึ่งในรูปประกอบนั่นคือการเปรียบเทียบต้นทุนการได้มาของ Modern Reports บนโทรศัพท์มือถือที่ Microsoft ทำได้ถูกกว่า Oracle มาก รูปดังกล่าวผู้เขียนเห็นมาตั้งแต่ Datasheet ของ Microsoft SQL Server 2016 และตัวเลขไม่ได้ต่างไปจากเดิมเลย