如果想知道mysql資料庫中每個表占用的空間、表記錄的行數的話,可以開啟mysql的information_schema 資料庫。
在該庫中有乙個tables 表,這個表主要字段分別是:
table_schema : 資料庫名
table_name : 表名
engine : 所使用的儲存引擎
tables_rows : 記錄數
data_length : 資料大小
index_length : 索引大小
其他欄位請參考mysql的手冊,我們只需要了解這幾個就足夠了。
所以要知道乙個表占用空間的大小,那就相當於是資料大小 + 索引大小即可。(mysql預設資料大小單位為b)
(1)查詢指定資料庫-表的大小sql:
select table_name,data_length+index_length,table_rows from tables
where table_schema='資料庫名' and table_name='表名';
(2)查詢所有庫,所有表的行數sql:
select table_schema,table_name,table_rows from information_schema.`tables`
group by table_schema,table_name,table_rows order by table_rows desc;
(3)查詢所有庫,所有表的大小sql:
select table_schema,table_name,table_rows,
concat(round(sum((data_length + index_length)/1024/1024/1024),2),'g') as data_size
from information_schema.`tables` group by table_schema,table_name,table_rows order by table_rows desc;
(1)記錄慢查詢的日誌檔案
show variables like '%slow%';
(2)定義慢查詢的時長閾值
show variables like '%long_query_time%';
(3)慢查詢資料表 (mysql.slow_log)
select * from mysql.slow_log where start_time>'2020-08-28 12:01:01.670093' limit 0,100;
(4)如果上表無法查詢(通常是許可權不足!!,一般需要運維開通mysql庫的訪問許可權)
(1)檢視 host 對應的許可權設定
select * from mysql.user;
(2)修改使用者許可權引數設定
update mysql.user set select_priv=『y』 , insert_priv=『y』, update_priv=『y』, delete_priv=『y』 where host=『192.168.1.47』;
flush privileges;
(1)查詢被鎖表的那個程序的id
show processlist;
show open tables where in_use > 0;
command為waitting的就是鎖住的表,info為執行某條語句的資訊,id為程序。
(2)kill掉鎖表的程序id(此操作需謹慎)
kill id;
(1)通過元資料表查詢所有表的最大分割槽資訊
select table_schema,table_name,max(partition_name),max(partition_description) from (
select table_schema,table_name,partition_name,table_rows,partition_expression,partition_description from information_schema.partitions
) tmp
where partition_name is not null
group by table_schema,table_name;
(2)查詢指定表的分割槽資訊
select * from (
select table_schema,table_name,partition_name,table_rows,partition_expression,partition_description from information_schema.partitions
) tmp
where partition_name is not null
and table_schema='zbt' and table_name='st_zbt_retained_detail';
(1)查詢所有庫表的引擎型別
select table_schema,table_name,`engine` from information_schema.tables;
(2)查詢引擎為myisam的表的數量
select count(*) from (
select table_catalog
,table_schema
,table_name
,engine
from information_schema.tables
where engine='myisam'
) tmp;
(3)生成sql修改表引擎(修改test庫中表的引擎為innodb)
select concat('alter table ',table_name,' engine=innodb;') my_sql
from information_schema.tables where table_schema="test" and engine="myisam";
6、持續更新中。。。 mysql資料庫維護 維護MySQL資料庫表
在本教程中,我們將向您介紹一些非常有用的語句,使您可以在mysql中維護資料庫表。mysql提供了幾個有用的語句,可以有效地維護資料庫表。這些語句使您能夠分析,優化,檢查和修復資料庫表。分析表語句 mysql查詢優化器是mysql伺服器的重要組成部分,為查詢建立了乙個最佳的查詢執行計畫。對於特定查詢...
mysql資料庫維護
進行資料庫維護 analyze table 表名 檢查表鍵是否正確 check table 表1 表2 用來針對許多問題對錶進行檢查診斷啟動問題 help 顯示幫助 safe mode 裝載減去某些最佳配置的伺服器 verbose 顯示全文本訊息 version 顯示版本資訊然後退出錯誤日誌 日誌檔...
mysql 資料庫維護
一 備份資料 1 使用mysqldump命令備份 前提 musql的版本必須一致。mysqldump u username p default character set gbk dbname table1 table2 backupname.sql 例項 mysqldump u root p de...