CREATE PROCEDURE registurl(urlx varchar(256), mtimex int, totalwordsx int unsigned) BEGIN DECLARE urlid, totaldocs bigint unsigned; START TRANSACTION; SELECT id INTO urlid FROM urls WHERE url = urlx FOR UPDATE; IF urlid IS NOT NULL THEN IF GET_LOCK('keywords.words', 10) THEN UPDATE regwords, words SET words.df = words.df - 1 WHERE regwords.url_id = urlid AND words.id = regwords.word_id; DO RELEASE_LOCK('keywords.words'); DELETE FROM dispwords WHERE url_id = urlid; DELETE FROM regwords WHERE url_id = urlid; ELSE ROLLBACK; TRUNCATE tmpwords; SET urlid = NULL, totalwordsx = NULL; START TRANSACTION; END IF; END IF; IF totalwordsx IS NULL THEN DELETE FROM urls WHERE id = urlid; UPDATE count_urls SET n = n - 1 WHERE urlid IS NOT NULL; COMMIT; ELSE DO LAST_INSERT_ID(0); INSERT urls (url, mtime, totalwords) VALUES (urlx, FROM_UNIXTIME(mtimex), totalwordsx) ON DUPLICATE KEY UPDATE mtime = VALUES(mtime), totalwords = VALUES(totalwords); IF urlid IS NULL THEN SET urlid = LAST_INSERT_ID(); UPDATE count_urls SET n = n + 1 WHERE urlid; END IF; IF urlid && GET_LOCK('keywords.words', 10) THEN INSERT words (word) SELECT word FROM tmpwords ON DUPLICATE KEY UPDATE df = words.df + 1; DO RELEASE_LOCK('keywords.words'); UPDATE tmpwords JOIN words USING (word) SET tmpwords.id = words.id, tmpwords.df = words.df; INSERT regwords SELECT urlid, id, tf FROM tmpwords; SELECT n INTO totaldocs FROM count_urls; INSERT dispwords SELECT urlid, id, tf / totalwordsx * (LN(totaldocs / df) + 1) tfidf FROM tmpwords WHERE totaldocs / df < 100000 ORDER BY tfidf DESC LIMIT 10; COMMIT; ELSE ROLLBACK; END IF; TRUNCATE tmpwords; END IF; END 0223動け動けウゴウゴ2ちゃんねる2007/01/27(土) 22:15:46ID:FzgyxveM0 思い出した 昔、あったな、社会とかのボタン 無くなったんだよな確か? 記憶力弱いんで違ってたらスマソ 3回目か ホリエモンの1クリック程度の価値有ったのだろうか?
意外と進歩してないモンだな 辞書をロカールに於いて、集めてきて賢くするだったかな? 英和、和英何てのも有った 思い出すことは出来ないだろうが 0224株価【1150】 △ ◆cZfSunOs.U 2007/01/27(土) 22:22:23ID:vVc+ALlX0>>222 のでもまだデッドロックが起きて...... >>221 の top の表示で余裕に見えたのは, 新規データは登録されるものの,再クロールでの更新データはデッドロックのため ほとんど登録されず CPU が休んでいたための模様w GET_LOCK() でのロック範囲を広げて
CREATE PROCEDURE registurl(urlx varchar(256), mtimex int, totalwordsx int unsigned) BEGIN DECLARE urlid, totaldocs bigint unsigned; START TRANSACTION; IF GET_LOCK('keywords.registurl', 10) THEN SELECT id INTO urlid FROM urls WHERE url = urlx FOR UPDATE; IF urlid IS NOT NULL THEN UPDATE regwords, words SET words.df = words.df - 1 WHERE regwords.url_id = urlid AND words.id = regwords.word_id; DELETE FROM dispwords WHERE url_id = urlid; DELETE FROM regwords WHERE url_id = urlid; END IF; IF totalwordsx IS NULL THEN UPDATE count_urls SET n = n - 1 WHERE urlid IS NOT NULL; DO RELEASE_LOCK('keywords.registurl'); DELETE FROM urls WHERE id = urlid; COMMIT; ELSE INSERT urls (url, mtime, totalwords) VALUES (urlx, FROM_UNIXTIME(mtimex), totalwordsx) ON DUPLICATE KEY UPDATE mtime = VALUES(mtime), totalwords = VALUES(totalwords); IF urlid IS NULL THEN SET urlid = LAST_INSERT_ID(); UPDATE count_urls SET n = n + 1; END IF; INSERT words (word) SELECT word FROM tmpwords ON DUPLICATE KEY UPDATE df = words.df + 1; UPDATE tmpwords JOIN words USING (word) SET tmpwords.id = words.id, tmpwords.df = words.df; DO RELEASE_LOCK('keywords.registurl'); INSERT regwords SELECT urlid, id, tf FROM tmpwords; SELECT n INTO totaldocs FROM count_urls; INSERT dispwords SELECT urlid, id, tf / totalwordsx * (LN(totaldocs / df) + 1) tfidf FROM tmpwords WHERE totaldocs / df < 100000 ORDER BY tfidf DESC LIMIT 10; COMMIT; TRUNCATE tmpwords; END IF; ELSE ROLLBACK; TRUNCATE tmpwords; END IF; END;;
The following key points apply to old-style scripts in /usr/local/etc/rc.d/:
o The scripts within each directory are executed in lexicographical order. If a specific order is required, numbers may be used as a prefix to the existing filenames, so for example 100.foo would be executed before 200.bar; without the numeric prefixes the opposite would be true. 0246root▲▲ ★2007/02/02(金) 23:41:03ID:???0?PLT(23456) なるほど、ZZZ- を 000- とかにすればいいと言ってますかね。 あるいは、/md の mount 部分だけを 000- で切り出すとか。 0247動け動けウゴウゴ2ちゃんねる2007/02/03(土) 21:03:29ID:HwPyiOiV0 ¶ ¶\ ¶ .\¶¶¶..¶,/¶ ヽ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶、 ¶¶¶¶¶¶エルメェス¶¶¶¶¶¶¶¶ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶i ¶<=○=><=○=> ¶i / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶* i < (ヘイッ!私のギコクンどこ? ¶:、¶¶¶ー□‐¶¶¶¶¶¶¶/ \_____________________ ¶|¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶ ¶ ¶¶¶¶¶¶¶¶¶¶¶¶¶ ¶¶¶¶¶ |ヽ ¶ ¶¶¶¶¶¶¶¶¶¶¶¶¶ ¶¶丿 ¶ ¶ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶ )_ノ (.,.,.,.,..,).,.,.,..,.,.,.(,..,.,.,.,..,.),.,.,,../