mysql テーブル列のレプリケーション、mysql 接続時間、メモリ制御。
一時テーブル temp_t とメインテーブル table1 の 2 つのテーブルがあり、どちらも MyISAM で、それぞれに約 28W のレコードがあります。
cron はネットワークから毎分何らかの情報を取得するようにスケジュールし、まずそれを temp_t (頻繁な書き込み) に保存します。
次に、cron は 10 分ごとに temp_t からメイン テーブル table1 に情報をコピーするようにスケジュールします (頻繁に読み取り、10 分ごとに書き込みます)。
temp_t フィールド id (auto_increment)、title (varchar (200))、content (varchar (500))、date (DATETIME)、mykey (tinyint (1) デフォルト 1、これはメインにコピーされたかどうかを判断するために使用されます。テーブル、2)
のコピー後に UPDATE
table1 フィールド ID (auto_increment なし)、タイトル (varchar(200))、内容 (varchar(500))、日付 (DATETIME)
28W レコード、各データ テーブルは約 300MB、各更新には約 2K ~ 3K レコードが必要です。
直接コピーすると、MYSQL の接続時間が長すぎて、MYSQL のパフォーマンスが低下し、Table1 にテーブル ロックのような現象が発生し、Table1 のクエリ時間が大幅に長くなります。
require dirname(__FILE__) . '/../connection.php';<br /> mysql_select_db("news",$connextion);<br /> mysql_query("SET NAMES utf8");<br /> $query = mysql_query("SELECT * FROM temp_t where mykey = '1'");<br /> while($rows = mysql_fetch_array($query)){<br /> mysql_query("UPDATE temp_t SET mykey='2' WHERE id='".mysql_real_escape_string($rows['id'])."'");<br /> mysql_query("INSERT INTO table1 (id,title,content,date) values ('".mysql_real_escape_string($rows['id'])."','".mysql_real_escape_string($rows['title'])."','".mysql_real_escape_string($rows['content'])."','".mysql_real_escape_string($rows['date'])."'");<br /> }<br /> mysql_close($connextion);
require dirname(__FILE__) . '/../connection.php';<br /> mysql_select_db("news",$connextion);<br /> mysql_query("SET NAMES utf8");<br /> $query = mysql_query("SELECT * FROM temp_t where mykey = '1'");<br /> $jon = array();<br /> while($rows = mysql_fetch_array($query)){<br /> $jon['a'] = $rows['id'];<br /> $jon['b'] = $rows['title'];<br /> $jon['c'] = $rows['content'];<br /> $jon['d'] = $rows['date'];<br /> $pjon .= json_encode($jon).',';<br /> }<br /> mysql_close($connextion);<br /> $njso = json_decode('['.substr($pjon,0,-1).']');<br /> foreach($njso as $nx){ <br /> if($nx->a){<br /> require dirname(__FILE__) . '/../connection.php';<br /> mysql_select_db("news",$connextion);<br /> mysql_query("SET NAMES utf8");<br /> mysql_query("UPDATE temp_t SET mykey='2' WHERE id='".mysql_real_escape_string($nx->a)."'");<br /> mysql_query("INSERT INTO table1 (id,title,content,date) values ('".mysql_real_escape_string($nx->a)."','".mysql_real_escape_string($nx->b)."','".mysql_real_escape_string($nx->c)."','".mysql_real_escape_string($nx->d)."'");<br /> mysql_close($connextion);<br /> }<br /> }