MYSQL資料庫 表維護

2021-10-24 02:57:38 字數 3351 閱讀 8432

如果想知道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...