MySQLベース----マスデータ統計処理、アナログ物化ビュー


テーブル接続や集約などの時間のかかる操作を予め計算して保存するための結果である物体化ビュー.これにより、クエリーを実行する際に、これらの時間のかかる操作を回避し、迅速な結果を得ることができる.この機能は、大規模なデータベースoracle 10 gのみdb 2でサポートされていますが、MySQL 5.1この機能はまだありません.本人はイベントスケジューリングとストレージプロセスを通じて物化ビューをシミュレートした.それでは皆さんで議論していきましょう.^-^二準備知識1)ストレージプロセス:データベースを遊んだことがある人は、彼が何なのか知っています~,~2)イベントスケジューリング:MySQL 5.1はじめからある新機能.はっきり言ってタイマーです.Javaのtimerとはあまり差がありません.
show processlist; --          ,          ,    event_scheduler
set global event_scheduler = on; --       ,         ,off    
show processlist\G;--    ,       User: event_scheduler

--         ,       
ALTER EVENT `myEvent` 
ON COMPLETION PRESERVE 
ENABLE;
--  
ALTER EVENT `myEvent` 
ON COMPLETION PRESERVE 
DISABLE;

mysqlはデフォルトでeventを起動しないので、myを変更する必要があります.iniかmy.cnf[mysqld]の下に下行のように加える
event_scheduler=1三シミュレーション物化ビュー1)まずベーステーブルを作成しましょう.
CREATE TABLE `user` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
);

2)デザインビュー18歳全員の数を調べたいです.簡単です.select count(*)from user where age=18です.従来のコンセプトのビューの場合、MySQLではビューにアクセスするたびに一時テーブルを作成し、実行します.大量のデータの場合、このような効率は非常に低い.マテリアライズド・ビューでは、使用中にリフレッシュするのではなく、このテンポラリ・テーブルをタイミングよくリフレッシュします.また、物体化ビューの「テンポラリ・テーブル」は常に存在します.だから効率が非常に高いです.スペースで時間を変える^-^3)「物化ビュー」のテーブルを作成
CREATE TABLE `user_view` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `c` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
);

4)設計ストレージプロセス
CREATE PROCEDURE demoSp()
BEGIN
    DECLARE z INT;
SELECT COUNT(*) INTO z FROM user;
delete from user_view;
insert into user_view(c) values(z);
END;

5)スケジューリングを設計し実行し,実験を明らかにするために,スケジューリングを5秒に1回に設定しよう.サイクルは自分で調節できます.
CREATE EVENT `myEvent` 
ON SCHEDULE EVERY 5 SECOND 
ON COMPLETION PRESERVE 
DO call demoSp();

四上記の実現をまとめると、あまり明らかではないかもしれませんが、大量のデータ処理の際に統計を行い、性能が明らかに向上します.みんなが実験をするとき、insert文を1つ増やして、観察しやすいです.データ更新の際、データ量が大きい場合は、次の手順で処理する必要があります1)delete 1レコード2)insert 1レコード3)コミット一度にデータをすべて削除すると、クエリの際に空のテーブルが発生する可能性があります.統計の使用にも影響します.このイベントスケジューリングを利用することで、タイミングバックアップの件も同時に解決する.
テーブルパーティションに合わせて、インデックスを同時に使用することをお勧めします.これにより、パフォーマンスが向上します.
未完了:テーブルを更新する際には、単純な削除再挿入ではなく、何らかのアルゴリズムを用いて実行する必要がある.
問題があったら皆さんメッセージを残してください.著作権所有、転載は出典を明記してください^-^