070119 13:46:27 [ERROR] /home/c22chio/mysql/bin/mysqld: Table './keywords/urls' is marked as crashed and should be repaired 070119 13:46:27 [Warning] Checking table: './keywords/urls' 070119 13:47:12 [ERROR] /home/c22chio/mysql/bin/mysqld: Table './keywords/dispwords' is marked as crashed and should be repaired 070119 13:47:12 [Warning] Checking table: './keywords/dispwords' 070119 13:47:28 [ERROR] /home/c22chio/mysql/bin/mysqld: Table './keywords/regwords' is marked as crashed and should be repaired 070119 13:47:28 [Warning] Checking table: './keywords/regwords' 070119 13:48:09 [Warning] Recovering table: './keywords/regwords' 070119 13:55:05 [ERROR] /home/c22chio/mysql/bin/mysqld: Table './keywords/words' is marked as crashed and should be repaired 070119 13:55:05 [Warning] Checking table: './keywords/words' 070119 13:55:13 [Warning] Recovering table: './keywords/words' 070119 13:55:13 [Note] Retrying repair of: './keywords/words' with keycache 070119 13:55:52 [Note] Found 1269663 of 1269666 rows when repairing './keywords/words' 0147root▲▲ ★2007/01/20(土) 23:43:04ID:???0?PLT(22230)>>146 上げました。
CREATE PROCEDURE registurl(urlx varchar(256), mtimex int, totalwordsx int unsigned) BEGIN DECLARE urlid, totaldocs bigint unsigned; SELECT id INTO urlid FROM urls WHERE url = urlx; 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 DELETE FROM urls WHERE id = urlid; 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(); 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; INSERT regwords SELECT urlid, id, tf FROM tmpwords; SELECT COUNT(*) INTO totaldocs FROM 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; TRUNCATE tmpwords; END IF; END 0183ひろゆき@どうやら管理人 ★2007/01/25(木) 21:19:00ID:???0?S★(102442) おぉ、、ストアードプロシージャーをすでに使ってるんですかぁ。 ラジャーです。 0184ノtasukeruyo2007/01/25(木) 22:12:16ID:K8P4JlkZ0?2BP(115) Operaだと関連キーワードやofuda.ccのあれととスレの一番上の全部や掲示板に戻るが重なって 掲示板に戻るがクリックできない。 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ja) Opera 9.02 0185動け動けウゴウゴ2ちゃんねる2007/01/26(金) 00:26:59ID:CxnnXu9Q0 これって、全部、普通のブラウザからの機能ですよね 2ch専用ブラウザにデータを渡して貰えば、クライアントで処理できるんじゃないの?
070126 15:50:04 [ERROR] Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space mysqld got signal 11;
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;;