mysql 运维手册_MySQL数据库的维护手册

查看MySQL 库中所有表的大小和记录数

SELECT TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,(DATA_LENGTH+INDEX_LENGTH) as length, \

TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,3), 'MB') as total_size \

FROM information_schema.TABLES WHERE TABLE_SCHEMA='database_name' order by length desc;

说明:

TABLE_NAME :表名字;

DATA_LENGTH : 数据大小;

INDEX_LENGTH :索引大小;

TABLE_ROWS : 记录数量;

TABLE_SCHEMA : 数据库名字;

ENGINE:所使用的存储引擎;

information_schema :是mysql自带的,它提供了访问数据库元数据的方式,元数据是关于数据的数据,

如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。

一个表占用空间的大小,相当于是 数据大小 + 索引大小;

实例:

mysql> SELECT TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,(DATA_LENGTH+INDEX_LENGTH) as length,\

-> TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,3), 'MB') as total_size \

-> FROM information_schema.TABLES WHERE TABLE_SCHEMA='zhcwsystem' order by length desc;

+---------------------------------+-------------+--------------+------------+------------+------------+

| TABLE_NAME | DATA_LENGTH | INDEX_LENGTH | length | TABLE_ROWS | total_size |

+---------------------------------+-------------+--------------+------------+------------+------------+

| tab_lottery_spinfo_bd | 7332730928 | 489879552 | 7822610480 | 31176968 | 7460.223MB |

| tab_kaijiang_info | 130711552 | 16269312 | 146980864 | 853084 | 140.172MB |

| tab_lottery_match_bd | 55002516 | 3718144 | 58720660 | 271763 | 56.000MB |

| tab_lottery_result_bd | 16977364 | 10750976 | 27728340 | 276547 | 26.444MB |

| tab_cz_zj_info | 18198416 | 607232 | 18805648 | 26841 | 17.934MB |

| tab_lottery_result | 6447924 | 3440640 | 9888564 | 120396 | 9.430MB |

| tab_sport_lottery_info | 5374524 | 1154048 | 6528572 | 39045 | 6.226MB |

| tab_cz_dq_info | 5115396 | 424960 | 5540356 | 8684 | 5.284MB |

| tab_nb_detail | 56 | 2048 | 2104 | 1 | 0.002MB |

| tab_cz_type | 40 | 2048 | 2088 | 2 | 0.002MB |

| tab_lottery_result_lancai_copy1 | 0 | 2048 | 2048 | 0 | 0.002MB |

| tab_lottery_result_lancai_copy | 0 | 2048 | 2048 | 0 | 0.002MB |

+---------------------------------+-------------+--------------+------------+------------+------------+

12 rows in set (0.19 sec)

MySQL 复制表结构

MySQL复制表结构主要有以下几种方法。

方法1:   create table new_tab like ori_tab

mysql> desc tab_lottery_spinfo_bd;

+--------------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------------+-------------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| lotteryid | varchar(32) | NO | MUL | NULL | |

| lotteryissue | varchar(12) | NO | | NULL | |

| ballid | varchar(8) | NO | | NULL | |

| spinfo | text | YES | | NULL | |

| single | int(1) | YES | | 0 | |

| p_status | varchar(30) | YES | | NULL | |

| lasttime | datetime | YES | | NULL | |

| addtime | datetime | YES | | NULL | |

+--------------+-------------+------+-----+---------+----------------+

9 rows in set (0.00 sec)

mysql> create table tab_lottery_spinfo_bd_new like tab_lottery_spinfo_bd;

Query OK, 0 rows affected (0.08 sec)

mysql> desc tab_lottery_spinfo_bd_new;

+--------------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------------+-------------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| lotteryid | varchar(32) | NO | MUL | NULL | |

| lotteryissue | varchar(12) | NO | | NULL | |

| ballid | varchar(8) | NO | | NULL | |

| spinfo | text | YES | | NULL | |

| single | int(1) | YES | | 0 | |

| p_status | varchar(30) | YES | | NULL | |

| lasttime | datetime | YES | | NULL | |

| addtime | datetime | YES | | NULL | |

+--------------+-------------+------+-----+---------+----------------+

9 rows in set (0.01 sec)

mysql> select count(*) from tab_lottery_spinfo_bd_new;

+----------+

| count(*) |

+----------+

| 0 |

+----------+

1 row in set (0.00 sec)

方法2:   create table new_tab1 select * from ori_tab limit 0;

mysql> create table tab_lottery_spinfo_bd_new1 select * from tab_lottery_spinfo_bd limit 0;

Query OK, 0 rows affected (0.08 sec)

方法3:执行SQL语句来创建新表的表结构

# 显示需创建表的SQL语句:

mysql> show create table tab_lottery_spinfo_bd\G;

*************************** 1. row ***************************

Table: tab_lottery_spinfo_bd

Create Table: CREATE TABLE `tab_lottery_spinfo_bd` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`lotteryid` varchar(32) NOT NULL,

`lotteryissue` varchar(12) NOT NULL,

`ballid` varchar(8) NOT NULL,

`spinfo` text,

`single` int(1) DEFAULT '0',

`p_status` varchar(30) DEFAULT NULL,

`lasttime` datetime DEFAULT NULL,

`addtime` datetime DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `lotteryissue` (`lotteryid`,`lotteryissue`,`ballid`)

) ENGINE=MyISAM AUTO_INCREMENT=312 DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

ERROR:

No query specified

# Copy上面的SQL语句,修改 表名 和 AUTO_INCREMENT 的值,然后执行一下。

CREATE TABLE `tab_lottery_spinfo_bd_new2` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`lotteryid` varchar(32) NOT NULL,

`lotteryissue` varchar(12) NOT NULL,

`ballid` varchar(8) NOT NULL,

`spinfo` text,

`single` int(1) DEFAULT '0',

`p_status` varchar(30) DEFAULT NULL,

`lasttime` datetime DEFAULT NULL,

`addtime` datetime DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `lotteryissue` (`lotteryid`,`lotteryissue`,`ballid`)

) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8

MySQL复制表结构及其表数据

方法1: create table new_tab select * from ori_tab;

mysql> create table tab_lottery_spinfo_bd_new1 select * from tab_lottery_spinfo_bd;

Query OK, 1004000 rows affected (0.58 sec)

Records: 1004000 Duplicates: 0 Warning: 0

方法2: create table new_tab2 select filed1,filed2 from ori_tab [ where id=1];

mysql> create table tab_lottery_spinfo_bd_new2 select id,lotteryid,lotteryissue,ballid,spinfo from tab_lottery_spinfo_bd where lotteryissue=90602;

Query OK, 311 rows affected (0.28 sec)

Records: 311 Duplicates: 0 Warning: 0

以上两种方法,方便快捷、灵活性强。

方法3: 先创建一个空表,然后在进行 INSERT INTO new_tab3

先创建一个新表,然后执行如下两个语句:

INSERT INTO new_tab3 SELECT * FROM ori_tab;

或者:

INSERT INTO  new_tab3(field1, field2, field3) SELECT fied1, field2, field3 FROM ori_tab;

这种方法不是很方便,但是也有很多人经常用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值