@@ -4457,3 +4461,3 @@ /* Type of column was changed. Force to rebind */ - if (imp_sth->bind[idx].buffer_type != buffer_type) + /* if (imp_sth->bind[idx].buffer_type != buffer_type) */ imp_sth->has_been_bound = 0; 0132ひろゆき@どうやら管理人 ★2007/01/06(土) 17:43:25ID:???0?S★(102338) DBD::mysqlってよくつかわれてそうなのに。。 0133耐2007/01/06(土) 19:49:16ID:FcjBKnL90 このやろうなめやがって!! 0134株価【1400】 ▲▲▲▲ ◆cZfSunOs.U 2007/01/07(日) 04:55:44ID:RElzDEdE0>>132 DBD::mysql 自体はよく使われてても,server side prepare は デフォルトでは off なのであまり使われてないのかも......
http://search.cpan.org/~capttofu/DBD-mysql-4.00/lib/DBD/mysql.pm Prepared statement support (server side prepare)
As of 3.0002_1, server side prepare statements were on by default (if your server was >= 4.1.3). As of 3.0009, they were off by default again due to issues with the prepared statement API (all other mysql connectors are set this way until C API issues are resolved). The requirement to use prepared statements still remains that you have a server >= 4.1.3
To use server side prepared statements, all you need to do is set the variable mysql_server_prepare in the connect:
There are many benefits to using server side prepare statements, mostly if you are performing many inserts because of that fact that a single statement is prepared to accept multiple insert values. 0135ひろゆき@どうやら管理人 ★2007/01/08(月) 11:10:08ID:???0?S★(102351) 現状ってあとは何が足りないんでしたっけ? 0136動け動けウゴウゴ2ちゃんねる2007/01/08(月) 22:50:59ID:EY1iKiNMP>>1350137root▲▲ ★2007/01/08(月) 23:12:32ID:???0?PLT(22223)>>135 ・10Mbps→100Mbps ・>>125-126 の作業 - MySQL - mecab - c2 の httpd を減らす
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;;