COSCUP Why should we move to MySQL 8.0筆記

講者彭立勛。議程連結。 引言這是一篇研討會的筆記,再加上個人的理解和實驗。對一些東西不太了解,所以有些地方會一筆帶過。解決的BUG1. Bug #199 Innodb autoincrement stats los on restart從bug編號就能看出這個...

MySQL 中各種 JOIN 的差別

MySQL 中的 JOIN 語法,可以讓我們將多張表關聯起來,但就跟斯斯有三種一樣,JOIN 也有三種,分別是。INNER JOIN (可以簡寫成 JOIN)。LEFT JOIN (有些資料庫會是 LEFT OUTER JOIN)。RIGHT JOIN (有些資料庫會是 RIGH...

簡單介紹 Laravel 的 DB Transactions

MySQL 資料庫,PHP 的好夥伴,在當前的版本中,MySQL 資料庫基本上都是使用 innoDB 作為預設的資料庫引擎。innoDB 與之前 MyISAM 相比,支援了 ACID 相容的交易 (Transaction) 功能。所謂的交易,是資料庫管理系統執...

避免 Laravel ORM 的 N+1 問題

目前大多框架都會使用 ORM (Object Relational Mapping,物件關係對映) 的方式與資料庫進行互動,ORM 的用途,是將關聯式資料庫的資料表,對應到應用程式中的物件,對資料庫的操作都會使用複雜的物件包裝好並模組化...

更改存放部落格圖片的 S3 Bucket 名稱

最近沒事想找事做,想更改用來放置部落格圖片 S3 bucket 的名稱,若要問為什麼的話…原來部落格的網域是使用 recodeblog.com,後來覺得不夠帥改成了 docfunc.com,雖然部落格網域已更改,但卻沒有更改原本用來放置文...

使用 Generated Columns 來阻擋分身信箱

前幾天看到一個影片,是 PlanetScale 介紹如何使用 Generated Columns 來阻擋分身信箱的註冊。分身信箱是指用戶可以使用 + 符號來讓信箱看起來不同,但實際上是同一個信箱。假設我的信箱是 [email protected],我可以...

使用 K8s CronJob 來備份資料庫

我的部落格目前是搭建在自己架的 K3s (K8s 輕量版)上,資料庫是使用 MySQL,為了以防萬一導致資料遺失,平常我會以人工的方式下指令來備份部落格的資料庫。kubectl exec -it <mysql-pod-name> -- mysqldump -u...

將部落格的 Laravel 版本從 6 升級至 7,當中所遇到的問題

花了點時間,將部落格的 Laravel 版本升級至 7。原本想說反正 8 也快出來了, 不如直接 6 跳 8 (錯誤示範,官方建議是一版一版慢慢升級),省得升級兩次,麻煩,不過 Laravel 新版本推出的時候,可能會有套件突然無法...

原來計數器可以這樣設計,簡單介紹 Slotted Counter Pattern

某天在上班途中滑推特的時候,看到一個很有趣的資料庫設計 Tips。這是很常見的計數器 (counter) 更新操作,當用戶觸發某些條件後,就將後端資料庫記錄的數量加 1。推文中的查詢語句以網頁瀏覽數當作例子,當用戶訪問...

公司網站突然變慢,資料庫直接滿載!淺談資料表的 EXPLAIN 語法與索引

今天上班途中,業務部門向 RD 部門回報公司網站突然掛掉了。經主管告知,資料庫 Server 的 CPU 使用率達到 100%,所以應該是有查詢過程卡住。請 MIS 協助開啟資料庫的 Slow Query Log 之後,發現有一個查詢語句執行...