[MySQL] – INSERT … ON DUPLICATE KEY UPDATE

MySQL 自4.1版,
支援 INSERT … ON DUPLICATE KEY UPDATE 語法,
一方面因同事發現,

使用 REPLACE , LOCK Table,
太大量的使用 REPLACE 會造成其他的 Query 被鎖住而變慢
問題,
因此建議相關 Replace 動作改為
INSERT … ON DUPLICATE KEY UPDATE

舉例:

INSERT INTO arptable VALUES('192.168.0.1', 'ooxxooxx') ON DUPLICATE KEY UPDATE mac='mac_value';

注意,使用此語句,
必須有一個唯一索引或主鍵

 ON DUPLICATE KEY UPDATE 動作其實只會針對 mac='mac_value' 欄位進行更新,
其它欄位則不會進行更動,
因此如有二個欄位遇 ON DUPLICATE KEY UPDATE 都要更新時,
則 … ON DUPLICATE KEY UPDATE mac='mac_value' , mac2='mac2_value';

延申閱讀 mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )

[Linux][sendmail] – /var/spool/mqueue

這是系統的Mail Queue,
凡是傳送中,或是傳送失敗的郵件都會被存放在此一目錄
,等待傳送。
每一封信在這個目錄下都會有兩個檔,
一個檔名是以”df”開頭,存放的是mail body,
另一個檔名則是以”qf”開頭,存放mail header,
這兩個檔檔名的其餘部份相同。
指令”mailq“可以讓你看見/var/spool/mqueue中等待傳送信件的情況。
mail queue位置在sendmail.cf下為一Option,
定義方式為 O QueueDirectory=/var/spool/mqueue ,你可以自行定義之。

[PHP][if-else] – 測試三元運算符與 if else 的運算速度

<?php
/**
* 以微秒为单位
* @return float
*/
function getMicrotime()
{
list($usec, $sec) = explode( , microtime());
return ((float)$usec + (float)$sec);
}


$fStartTime = getMicrotime();

for ($i=0; $i<100000; $i++){
$a = b;
if ($a==b) {
$a=c;
}
else{
$a=d;
}
}

$fEndTime = getMicrotime();

print $fEndTime - $fStartTime;

print<br>;

$fStartTime = getMicrotime();

for ($i=0; $i<100000; $i++){
$a =
b;
$a = ($a==
b) ? c : ‘d;
}

$fEndTime = getMicrotime();

print $fEndTime - $fStartTime;

?>
结果如下
0.133780002594  <- if else
0.106215000153  <- 三元
三元運算符比 if (){}else{} 快一些

[SSH][DNS] – Disable SSH DNS lookup

On default installation SSH daemon is setup to lookup the name of the client IP. This can take to a substantial delay, or in case your DNS servers are not working properly, can lead to an impossibility to connect.

You can disable DNS lookup by setting UseDNS no in /etc/ssh/sshd_config.

[Win][MSN] – 無法(不能)輸入中文問題

將~的MSN最近常常不能使用中文輸入法,

其實原因出自於偉大的微軟多餘的設計…唉~

以下就提供解決的方法。
1.首先找到電腦「桌面」msn的捷徑。

2.點選捷徑按右鍵,選擇內容。

3.然後選擇相容性,在將關閉這個應用程式的進階

[桌面軟體] – 4Windows

111

同事 TB 推薦 的桌面美化軟體,

試用後覺得很好用

fences

[Apache][shell] – Apache 每天自動重啟程式

[code]
/usr/local/server/bin/shell_process_restart
#!/usr/local/server/bin/php -q

<?php

$ns_path = "/usr/local/server/";

//SIKO-> step.1 stop
$apache_process_stop = escapeshellcmd($ns_path."bin/apachectl stop");
$apache_process_test = escapeshellcmd("pgrep httpd");
do{
exec($apache_process_stop);
system($apache_process_test,$ptset);
$i++;
}
while($ptset == 0 && $i < 10000);

//SIKO-> step.2 start
$apache_process_start = escapeshellcmd($ns_path."bin/apachectl start");
do{
exec($apache_process_start);
system($apache_process_test,$ptset);
$j++;
}
while($ptset == 1 && $j < 10000);

?>

[crontab]
00 01 * * * /usr/local/server/bin/lockrun --lockfile=/usr/local/server/log/shell_process_restart.lock -- /usr/local/server/bin/shell_process_restart > /dev/null 2>&1

[snmpwalk][cisco] – search port flow

使用 snmpwalk + vlanitem 是否有設定 + cisco mib 就可以達到 search port 的功能

/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.17.4.3.1.1  -t 3 -r 1
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.17.4.3.1.2 -t 3 -r 1
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.17.1.4.1.2 -t 3 -r 1
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.31.1.1.1.1 -t 3 -r 1
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.2.2.1.2 -t 3 -r 1

Next Page »