MySql、Oracle、Damengはレコード数とメモリ使用量をカウントします

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は同様のテーブルを見つけられませんでした。見つけた場合は、コメントを残すことができます。

おすすめ

転載: blog.csdn.net/qq845484236/article/details/108409523