https://avatars.githubusercontent.com/u/1217739?size=192

เมื่อต้องทำ pagination มันมีอะไรซุ่มรอเราอยู่

เปรียบเทียบกลยุทธ์การทำ pagination ใน SQL ทั้ง Offset/Limit, keyset cursor และ deferred joins พร้อมอธิบายว่าแต่ละแบบเหมาะกับสถานการณ์ใด

COLLATE ใน Database มันคืออิหยังกันนะ แล้วมันทำอะไรได้

อธิบายว่า COLLATE ในฐานข้อมูลคืออะไร และส่งผลต่อการเรียงลำดับและการเปรียบเทียบ string อย่างไร รวมถึงเรื่อง case และอักษรพิเศษ

เมื่อต้องใช้ชีวิตกับ SQL ก็ต้องอยู่ให้เป็น

เมื่อเราต้องทำงานกับ Relational database (RDBMS) สิ่งที่พบบ่อย ๆ เลยคือเมื่อข้อมูลมาก ขึ้นทำไมมันถึงได้ช้าลง ทำไมมันถึงไม่เร็วเหมือนตอน Dev กันนะ วันนี้มาดูวิธีออกแบบ Query และ Table ให้สามารถ Access ได้เร็วอย่างที่ควรจะเป็นกัน

DragonflyDB vs Redis

ปกติแล้วเวลาเราใช้งาน In-memory database ก็มักจะนึกถึง Redis กับ Memcache วันนี้เลยจะมาแนะนำอีกตัวนึงที่น่าสนใจนั่นคือ Dragonfly ซึ่งเคลมตัวเองว่าเป็น multi-threaded Redis replacement เลยมาลองทดสอบดูว่าระหว่าง Dragonfly กับ Redis 7 ผลจะเป็นอย่างไร

GOMAXPROCS เพื่อนที่ดีของ DevOps

ตั้งแต่ Go 1.5 เป็นต้นมานั้น ค่าของจำนวน User-Level ที่ Go App จะสามารถให้ทำงานพร้อมกันนั้นในแต่ละ Instance จะถูกกำหนดด้วย GOMAXPROCS แล้วทีนี้ค่าของ GOMAXPROCS จะมีค่าตามนิยามนี้

Note
GOMAXPROCS sets the maximum number of CPUs that can be executing simultaneously and returns the previous setting. It defaults to the value of runtime.NumCPU. If n < 1, it does not change the current setting. This call will go away when the scheduler improves.

Go กับการ re-use memory ด้วย sync.Pool

ถ้าใครเขียน goroutine ก็คงจะเคยพบเจอกับ sync.WaitGroup ที่ใช้ในการทำ wait group ให้ goroutine กันแล้ว แต่ใน pkg sync มี type นึงที่มีประโยชน์ในงานที่อยากจะมาแนะนำ คือ sync.Pool ที่จะมาช่วย re-use memory ลดการ allocate ที่ต้องใช้ของเดิมซ้ำ ๆ ได้