使用 K8s CronJob 來備份資料庫

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

使用 Generated Columns 來阻擋分身信箱

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

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

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

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

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

MySQL 中各種 JOIN 的差別

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

避免 Laravel ORM 的 N+1 問題

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

簡單介紹 Laravel 的 DB Transactions

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

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

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

COSCUP Why should we move to MySQL 8.0筆記

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

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

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