顯示具有 MySQL 標籤的文章。 顯示所有文章
顯示具有 MySQL 標籤的文章。 顯示所有文章

2012年9月5日 星期三

JDBC 的 Auto-Commit

參考資料:
1、Transactions
2、does Connection commit on close()?
3、JDBC Transaction Example
4、MySQL: InnoDB or MyISAM?

有個小任務是幫忙檢查為什麼在測試時,用我們自己的資料庫連線的 API 要開啟 TRANSACTION 模式
但就算設定了 auto-commit = false 還是會自動 commit
懷疑可能的原因....
1、我們的 API 用的是 executeUpdate() 去執行 INSERT、UPDATE 和 DELETE?(網路上的範例比較多都是呼叫 execute())
2、使用了 TOMCAT 的 JDBC connection pool?

2012年8月29日 星期三

在 MySQL 中做全文檢索

因為想要能夠提供一個 API,能夠回應資料庫當中哪些資料包含了指定的 key
因此查了一些資料,目前是打算用 MySQL 的 FULL TEXT SEARCH 的功能。

要使用 MySQL 的全文檢索,資料表型態必須是 MyISAM,同時要做全文檢索的欄位型態要是 FULLTEXT
然後對該欄位建立 FULLTEXT 類型的索引。(可參考官方文件 [1] 的說明)
使用時可以使用 MATCH (...) AGAINST (...) 敘述來進行全文檢索。
MATCH (...) 裡面指定的是要做全文檢索的欄位名稱,AGAINST (...) 裡面則是指定要搜尋的關鍵句。
它回應的會是一個數字,表示的是欄位內容跟關鍵句的相似度,如果完全不相似就會回傳 0。

2012年8月1日 星期三

Can't specify target table for update in FROM clause

參考資料:
1、Mysql error 1093 - Can't specify target table for update in FROM clause
2、PHP/MYSQL using an array in WHERE clause

原本我想要在資料表裡面把符合某個條件的值撈出來,然後把他們從資料庫裡刪掉
於是下了類似這樣的 SQL Statement:
DELETE FROM table WHERE id IN (SELECT * FROM table WHERE time < 11111111);
其實這段 SQL Statement 很明顯根本不用用到 SELECT...XD
只是...反正這只是個範例就是了,不要太在意!XD

2012年4月19日 星期四

MySQL 效能調教相關知識

先留一些資料下來。

1、關於 MySQL的記憶體使用量計算

轉貼文章內提到的資訊:
MySQL 記憶體需求量的計算
min_memory_needed = global_buffers + (thread_buffers * max_connections)

(1) global_buffers 包含:

key_buffer
innodb_buffer_pool
innodb_log_buffer
innodb_additional_mem_pool
net_buffer

(2) thread_buffers 包含:

sort_buffer
myisam_sort_buffer
read_buffer
join_buffer
read_rnd_buffer

2012年3月21日 星期三

提昇資料庫效率的方法:Partition

原本要找的是 AUTO_INCREMENT 爆掉的問題該怎麼處理
意外找到這個可以提昇資料庫效率的方法~
詳細說明可以直接看下列的參考資料

參考資料:
1、通過分區(Partition)提升MySQL性能(一)
2、通過分區(Partition)提升MySQL性能(二)
3、mysql 的 partition 與 auto_increment

在 [1] 的效能測試中,建了兩個資料表,一個使用 Partition、一個沒使用
然後用隨機產生的資料填入 800 萬筆資料,測試找出時間是 1995 年間的所有資料
在沒有做 Partition 的資料表中花了 38 秒,有做 Partition 的則只花了 3 秒多~
當資料有顯著的分區效果時,做 Partition 可以降低搜尋資料的時間~

不過後來又找到 [3],同時使用 AUTO_INCREMENT 跟 Partition 時 MySQL 可能會有問題....
目前暫定的作法是使用 Partition、放棄 AUTO_INCREMENT
用其他 INDEX 來盡可能達到類似 AUTO_INCREMENT 的 PRIMARY KEY 效果~