MySql、Oracle、Damengはレコード数とメモリ使用量をカウントします
ビジネスニーズを予測し、Baiduは2〜3時間を費やし、実践し、次の実現可能なソリューションを次のように編成しました。
MySql
1.更新間隔を設定し、システムテーブルを更新します
SET session information_schema_stats_expiry=0;
SET @@session.information_schema_stats_expiry=0;
ここで設定するのはセッションレベルであり、グローバル設定には影響しません。
変更された値を表示します。
SHOW session VARIABLES LIKE 'information_schema_stats_expiry';
2.クエリ
select TABLE_SCHEMA, TABLE_NAME,CONCAT(round(DATA_LENGTH/1024/1024,2) ,'MB')as TABLE_VOLUME,TABLE_ROWS
from information_schema.tables
where TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA = 'mySchema'
-- BASE TABLE是为了区分视图和表
オラクル
1.クエリ
select t.owner TABLE_SCHEMA、TABLE_NAME、num_rows || '' TABLE_ROWS、to_char(round(s.BYTES /1024/1024.0,2),'fm99999999990.00 ')TABLE_VOLUME
from dba_tables t
left join dba_segments s on t.table_name = s .segment_name
s.segment_type like 'TABLE%'
and t.owner = 'MySchema'
ダメンデータベース
1.システムテーブルを更新する
DBMS_STATS.GATHER_SCHEMA_STATS( 'mySchema'、100、TRUE、 'FOR ALL TABLE NUM_ROWS AUTO');
真ん中のパラメータについての非常に詳細なブログがいくつかあります。興味がある場合は、
https ://www.cnblogs.com/Zeros をチェックしてください。 /p/7026174.html
2.クエリ
select t.owner TABLE_SCHEMA,TABLE_NAME, num_rows||'' TABLE_ROWS,
to_char(round(s.BYTES /1024/1024.0,2),'fm99999999990.00') TABLE_VOLUME
from dba_tables t
left join dba_segments s on t.table_name=s.segment_name
where s.segment_type like 'TABLE%' AND t.tablespace_name = 'QMUSER'
すべてのdbaレベルのテーブルにはスーパーユーザー権限が必要です。通常、それらはエンタープライズのアプリケーションに対して開かれていません。そのため、dba_tablesはall_tablesで置き換えることができますが、dba_segmentsは同様のテーブルを見つけられませんでした。見つけた場合は、コメントを残すことができます。