長野雅廣 (Masahiro Nagano) 的 MySQL Beginners Talk
長野雅廣的「MySQL Beginners Talk で LT してきました」這篇 slide 對不熟悉 MySQL 的人講了兩個幾乎不會錯的觀念: 不要用 MyISAM,用 InnoDB Plugin。 建立監控機制。 先討論後面這點,算是任何 database 都通用的法則:當你遇到效能問題時,監控機制可以提供毛線球的線頭,讓你知道慢在哪裡:什麼時間滿載 (於是可以猜測是 cron job...
View ArticleInnoDB 的 Table Lock
InnoDB 設計上允許同時讀寫,在大多數的情況下不會產生 table lock,不過還是有機會。(或是刻意產生) 在「Innodb Table Locks」這篇文章提到 InnoDB 的各種 lock (都是帶過而已,不過當關鍵字去 Google 找應該是夠用了),在文章最後面整理出結論,第一個是: MySQL Table level locks and Innodb Table Level...
View ArticleMySQL 中,MyISAM 與 InnoDB 帶來的差異…
標題所提到的兩個 engine 是在 MySQL 中最常用到的兩個 engine。其中 MyISAM 是在 MySQL 5.1 之前的 default engine,InnoDB 則是 MySQL 5.5 之後的 default engine。 這篇主要是講 MySQL 5.1 + InnoDB Plugin,或是 MySQL 5.5 後的情況。 MyISAM 是 Table-level...
View ArticleMySQL 內 JOIN 的應用…
「Common use cases for the MySQL Join statement」這篇給的範例與把 MySQL 上常用到的幾種 JOIN 提出來分析,包括 index 與 explain。另外在「Managing hierarchical data with MySQL」也提到了要怎麼處理階層式資料。 對於 JOIN 大概分幾個階段: 在使用 MyISAM 的時候會儘量避免...
View ArticlePercona Server 5.5.30-30.2 (based on MySQL 5.5.30) 的改善
Percona 在前幾天推出基於 MySQL 5.5.30 的 Percona Server 5.5.30-30.2:「Percona Server for MySQL 5.5.30-30.2 now available」。 5.5.30-30.2 這個版本引入了 jemalloc: Percona Server for MySQL will now be shipped with the...
View ArticleMySQL InnoDB 遇到 Deadlock 時的判讀
在 Percona 的「How to deal with MySQL deadlocks」這篇文章裡面提到了 MySQL InnoDB Deadlock 的判讀與處理。 在支援 transaction 的 engine 裡 deadlock 是不可避免的常態。 在 MySQL 5.5 以及之前的版本,可以透過 Percona 的 pt-deadlock-logger 這隻...
View ArticleBerkeley DB 的介紹
在滿滿都是 NoSQL 的世代中,意外在「Berkeley DB: Architecture」這邊看到 Berkeley DB 的介紹... 2006 年 Berkeley DB 的公司 Sleepycat 被 Oracle 收購。在收購後 Oracle 改變了 open source 授權部份,從之前的 Sleepycat License 改成了 AGPLv3。 Berkeley DB...
View ArticleComposer 出現 lock file out of date 的解法
之前也有遇到,結果 Lorna Jane Mitchell 寫了一篇「Handling Composer "lock file out of date" Warning」給了不少解法。 第一種是 composer upgrade,直接全部升級。 第二種是先用 composer update --dry-run 看看是不是有人加到 composer.json 後忘記更新,如果是的話再用...
View ArticleNetflix 開發的 Delayed Queue
原來這個叫做 Delayed Queue,難怪之前用其他關鍵字都找不到什麼資料... (就不講其他關鍵字了 XD) Netflix 發表了他們自己所開發的 Delayed Queue:「Distributed delay queues based on Dynomite」。 本來的架構是用 Cassandra + Zookeeper 來做: Traditionally, we have been...
View Article關閉 MySQL 的 Query Cache
MySQL 的 Query Cache 是目前已知效能不好的主要因素之一 (global mutex lock 的緣故),在正式環境裡的 best practice 一般都是關閉,之前測過也是一開下去效能就會狂掉... 而 Percona 的人在討論要怎麼樣才能完全關閉 MySQL 的 Query Cache:「Is Your Query Cache Really...
View ArticleGoogle 弄出來的 Grumpy:把 Python 2.7 的程式碼轉成 Go...
Google 放出 Grumpy,可以把 Python 2.7 的程式碼轉成 Go:「Grumpy: Go running Python!」。 下面看到一個留言頗有趣的: This sad to see that Grumpy is mean to be a replacement of CPython 2.7 instead of CPython 3.x . I presume the code...
View ArticleMySQL 總算要拔掉 mysql_query_cache 了
半官方的 MySQL blog 上宣佈了拔掉 mysql_query_cache 的計畫:「MySQL 8.0: Retiring Support for the Query Cache」。 作者開頭引用了 ProxySQL 的人對 MySQL Query Cache 的說明: Although MySQL Query Cache was meant to improve performance,...
View Article加州的手機防竊提案讓失竊率下降不少...
2013 的時候提過「加州的手機防竊提案...」,後來在 2015 年生效: In a press release sent to reporters on Thursday, George Gascón said that since the law went into effect on July 1, 2015[,] 在兩大陣營都有類似的功能: Such a kill switch has...
View ArticlePercona XtraDB Cluster 裡各種與 LOCK 相關的指令會產生的效果
在「FLUSH and LOCK Handling in Percona XtraDB Cluster」這邊看到在 Percona XtraDB Cluster 內各種不同形式的 LOCK 指令會有不同的效果。有些跟一開始用的印象已經不太一樣了... FLUSH TABLE WITH READ LOCK 與 FLUSH TABLE <tablename> (WITH READ...
View ArticleAWS 推出了 S3 Object Lock,保護資料被刪除的可能性
AWS 推出了 S3 Object Lock,可以設定條件鎖住 S3 上的 object,以保護資料不被刪除:「AWS Announces Amazon S3 Object Lock in all AWS Regions」。 這個功能跟會計做帳的概念很像,也就是寫進去後就不能改,也不能刪除,保留一定時間後才移除掉: You can migrate workloads from existing...
View ArticleCloudflare 改善了同時下載同一個檔案的效率...
在「Live video just got more live: Introducing Concurrent Streaming Acceleration」這邊 Cloudflare 說明他們改善了同時下載同一個 cache-miss 檔案時的效率。 本來的架構在 cache-miss 時,CDN 這端會先取得 exclusive lock,然後到 origin server...
View ArticleRDBMS 裡的各種 Lock 與 Isolation Level
來推薦其他人寫的文章 (雖然是在 Medium 上...):「複習資料庫的 Isolation Level 與圖解五個常見的 Race Conditions」、「對於 MySQL Repeatable Read Isolation 常見的三個誤解」,另外再推薦英文維基百科上的「Snapshot isolation」條目。 兩篇文章都是中文...
View Article柏林鑰匙
在 Daily Hacker News 上看到「Berlin key」這個東西,用機械結構就可以強迫使用者一定要鎖門的鑰匙。 門平常都是上鎖的,要解鎖要先用鑰匙打開,然後從另外一邊鎖上後才能拿出來: 是個有年代的設計,但現在在柏林還是有不少這樣的設計: Invented by the Berliner locksmith Johannes Schweiger, the Berlin key was...
View Article用 flock 防止指令同時間重複執行
flock(1) 是個好用的工具,可以避免指令同時重複執行。基本的用法是: flock /tmp/example.lock /usr/bin/example 從這邊的 /tmp/example.lock 可以看出是透過檔案系統層的鎖實做的,也因為這樣的設計,所以用在 NFS 上時,可以規劃出跨機器的鎖定機制。(不過要注意舊版的 NFSv2/NFSv3 是可以刻意不跑 lock daemon...
View Article繞過 Screensaver Lock 的有趣話題...
在 Hacker News Daily 上看到「Screensaver lock by-pass via the virtual keyboard」這篇,裡面這邊題到了 screensaver lock 的有趣話題。 先講嚴肅一點的,這個 bug 被編號為 CVE-2020-25712,問題出在 xorg-x11-server 上: A flaw was found in...
View Article