Tag Archives: rdbms

Galera Cluster (Percona XtraDB Cluster) 同步速度的改善

Percona 的「State Snapshot Transfer (SST) at a glance」這篇給了 Galera Cluster (也就是 Percona XtraDB Cluster) 在同步速度的改善方案,整篇文章一步一步改善,從 51 分鐘降到 18 分鐘。 劃幾個重點。 首先是同步時的設定可以放到系統 my.cnf 的 [sst] 內,像是這樣: [sst] inno-apply-opts="--use-memory=20G" 其中改善最大的也就是 --use-memory,依照作者測試的數據,光這步就從 51 分鐘降到 30 分鐘。不過這邊要小心本來就有跑的 mysqld,如果 OOM 就慘了... 再來講的是 wsrep_slave_threads,不同於上面的 sst only … Continue reading

Posted in Computer, Database, Murmuring, MySQL, Network, Software | Tagged , , , , , , , , , , , , , , | Leave a comment

Relational Database System (RDBMS) 運作的方式

在「How does a relational database work」這篇文章用了很長的篇幅講「資料庫如何把 SQL query 轉換為實際的操作」: I’ll focus on what I think is essential: the way a database handles an SQL query. 資料庫也是人寫出來的,資料結構與演算法也是人設計出來的。你現在手上有資料,要怎麼把 SQL query 變成有效率的查詢操作行為,就是這篇文章在描述的。 看起來連 JOIN 的機制也講了不少...

Posted in Computer, Database, Murmuring, Software | Tagged , , , , , , , | Leave a comment

InnoDB 的各種枚枚角角

在 Baron Schwartz 的 blog 上看到「An Outline for a Book on InnoDB」這篇文章,作者因為被 InnoDB 所驚嘆而想要寫一本書探討 InnoDB 的設計:(因為雖然複雜,但試著將這些複雜的東西隱藏起來,不讓使用的人暈頭轉向) Years ago I pursued my interest in InnoDB’s architecture and design, and became impressed with its sophistication. Another way to say it is that … Continue reading

Posted in Computer, Database, Murmuring, MySQL, Software | Tagged , , , , , , , | Leave a comment

關於要不要使用 MySQL 這件事情...

前陣子 ant 將在 5xRuby 演講的投影片放出來:「技術演講:淺入淺出 MySQL & PostgreSQL」,另外在 kaif.io 上也有討論:「淺入淺出 MySQL & PostgreSQL // Speaker Deck」。 而國外剛好也有好幾篇文章都在討論 MySQL (InnoDB),其中「how innodb lost its advantage」這篇講到對 InnoDB 的壓縮感到悲觀... 另外 Pinterest 的「Learn to stop using shiny new things and love MySQL」這篇的時間點感覺上就是在回應上面某些想法。 下面是我的整理 (以及想法)。 MySQL … Continue reading

Posted in Computer, Database, MariaDB, Murmuring, MySQL, Network, PostgreSQL, Software, WWW | Tagged , , , , , | Leave a comment

關於 RDBMS 的 Schema Migration...

在「NoSQL 大腸花」這份投影片裡面的 Page 12 有提到關於 RDBMS 的 Schema Migration: 以目前 open source 的兩個專案,MySQL 與 PostgreSQL 來看,裡面提到的 lock 應該都不是問題... 首先是 MySQL 的部份,真的量大的網站都應該是往 InnoDB 投靠,而 pt-online-schema-change 在這個領域則是處理的很好。 Facebook 的 Mark Callaghan 曾經在 2010 年寫過一篇關於 InnoDB 的 online schema change 的原理:「Online Schema Change … Continue reading

Posted in Computer, Database, Murmuring, MySQL, PostgreSQL, Software | Tagged , , , , , , , , , | 2 Comments

InnoDB 的 isolation mode

Percona 老大 Peter Zaitsev 寫了一篇關於 InnoDB 的 isolation mode 與效能的關係:「MySQL performance implications of InnoDB isolation modes」。 關於 isolation level 的介紹,也可以參考維基百科上的說明:「Isolation (database systems)」。 其中有個我也認同的的建議: In general I think good practice is to use READ COMITTED isolation mode as default and change … Continue reading

Posted in Computer, Database, Murmuring, MySQL, Software | Tagged , , , , , , | Leave a comment

xkcd 的「Query」

貼圖就好,看得懂的人應該會笑出來 XDDD

Posted in Computer, Database, Murmuring, Software | Tagged , , , , , , | Leave a comment

資料結構、RDBMS、ORM

欠了很久的雜記。既然是雜記,只是把一些事情記錄下來,許多句子的主題會跳來跳去,請多見諒。 先解釋標題的三個詞彙。這邊要講的是三種存取資料的方式: 資料結構:直接操作最底層的資料結構。 RDBMS (Relational Database Management System,關聯式資料庫):透過 RDBMS 存取資料的方式,在 open source 領域比較常遇到 MySQL 與 PostgreSQL。由於與下面的 ORM 比較,這一條指的是透過 SQL query 去存取資料。 ORM (Object-Relational Mapping):透過程式語言的 object 以及 object 之間的關聯性存取資料。 彈性最高、效能也最好的是直接的資料存取,但寫起來也最複雜;而 ORM 大致上就是反過來。 現代的 RDBMS 大多都有實做 ACID,在自己操作資料結構時考慮這塊會比較辛苦。兩個層級之間有一些 library 試著解決這個問題 (像是 BerkeleyDB 或是 … Continue reading

Posted in Computer, Database, Murmuring, MySQL, PostgreSQL, Programming, Software | Tagged , , , , , , , , , , , , , , | Leave a comment

避免用 SQL 的 OFFSET 實做 Pager

發現以前沒有提到過...? WordPress.com Developer Resources 寫的這篇「An efficient alternative to paging with SQL OFFSETs」提到了用 OFFSET 實做 Pager 的效率問題。 因為 RDBMS 是人寫的,所以人想不到的方法,程式也做不到,像是這樣的 SQL query 效率不會好: SELECT * FROM my_table ORDER BY pk LIMIT 8000000, 100; 如果這是一般以 B+tree 儲存的 RDBMS (或是類似的資料結構),會先把 pk 拿出來,從最小的開始計算,掃過八百萬次後再去抓一百筆 pk … Continue reading

Posted in Computer, Database, Murmuring, Software | Tagged , , , , | 1 Comment