7月 21st, 2008 由 傻仔仔 發表 於 12:07 pm
my.cnf
log-bin = /var/log/mysql/mysql-bin.log => 存放位置
expire-logs-days = 7 => 保存天數
max_binlog_size = 104857600 => 單一記錄檔最大容量
重新啟動 mysql 之後,將會只保留七天份的 log 檔案。
mysql-bin.log 目的可以幫你恢復 mysql 某點狀態,或者查看過去 mysql 的 sql 記錄。
參考資料 Restoring lost data from the Binary Upate Log
參考資料 mysql binary log 超佔空間~ 導致 /var 分割區爆滿
分享此文章
[...]
5月 7th, 2008 由 傻仔仔 發表 於 03:05 pm
有朋友問到如何在mysql中使用隨機數
如何寫一個語句能一下更新幾百條MYSQL數據!
需要測試MYSQL數據庫,裡面有一個上萬條數據的數據庫,如何寫一個PHP文件一下每次更新幾百條信息,我都是寫一個循環一次更新一條信息,這樣我知道用WHILE寫就可以了,要是一次更新好比100條數據改如何寫呢!
謝謝
正確答案是:UPDATE cdb_posts SET views = rand();
順便給你找了點關於mysql rand函數的實例,如下:
那就在insert 命令中,value()裡面用rand(),注意字段寬度是否夠一直以為mysql隨機查詢幾條數據,就用
SELECT * FROM `table` ORDER BY RAND() LIMIT 5
就可以了。
但是真正測試一下才發現這樣效率非常低。一個15萬餘條的庫,查詢5條數據,居然要8秒以上
查看官方手冊,也說rand()放在ORDER BY 子句中會被執行多次,自然效率及很低。
You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.
搜索Google,網上基本上都是查詢max(id) * rand()來隨機獲取數據。
SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2
WHERE t1.id [...]
10月 10th, 2007 由 傻仔仔 發表 於 11:10 pm
select name from detail where name like ‘%a%’
會出現英文以外的中文字.例如: “新”而且效能不好所以不建議用。
SELECT * FROM table WHERE locate(substr,str)>0 ;
這個是不包括大小階但沒有剛才的問題
SELECT * FROM TABLE WHERE FIELDS LIKE BINARY ‘%FIND%’
這是有區別大小階的 需要使用lower,upper來轉換
select field from detail where binary ucase(field) like concat(’%’,ucase(’a’),’%’)
這個沒有search英文出中文的問題,而且沒有大小階的問題。但因為使用like 所以速度較慢。
最好的方法是使用正則表達式方法如下:
分享此文章