文章目录
- 查看数据库表大小
- 清空表
- 查看mysql语句执行过程(查询优化相关)
- mysql truncate具有外键约束的表
- mysql 查看数据库状态和连接数
- Mysql导出表结构及表数据 (mysqldump用法)
查看数据库表大小
SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), ‘MB’) as data FROM information_schema.TABLES WHERE TABLE_SCHEMA=‘database_name’; #其中database_name为数据库名称
清空表
truncate table table_name;
或者
rename table1 table2;
create if no exist table table1 like table2;
drop table table2;
或者
delete from table;
注意:
delete from table_name删除表的全部数据,对于MyISAM 会立刻释放磁盘空间 (应该是做了特别处理,也比较合理),InnoDB 不会释放磁盘空间;删除部分记录的话不管是MyISAM或InnoDB都不会释放空间,如果需要释放的话需要执行optimize table tablename。
三者的区别可以参考MySQL删除数据后磁盘空间的释放总结
查看mysql语句执行过程(查询优化相关)
explain select …
mysql truncate具有外键约束的表
清空表的时候报错(内容类似下面):
Cannot truncate a table referenced in a foreign key constraint (`表名`.`article_content`, CONSTRAINT `fk_aid` FOREIGN KEY (`aid`) REFERENCES `数据库名`.`article` (`id`))
解决办法:将foreign key 检查暂时关闭,truncate后再恢复回来:
SET foreign_key_checks=0;
truncate table table name;
SET foreign_key_checks=1;
select @@foreign_key_checks; #这个命令可以查看外键约束检查状态
mysql 查看数据库状态和连接数
- 查看和设置最大连接数
show variables like '%max_connection%'; 查看最大连接数
set global max_connections=1000; 重新设置最大连接数
用set global max_connections
命令设置的话,数据库重启后会失效,如果重启的话需要在配置文件中设置:
# 在/etc/my.cnf里面设置数据库的最大连接数
[mysqld]
max_connections = 1000
- 查看数据库当前连接数
mysql> show status like 'Threads%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 32 |
| Threads_connected | 10 |
| Threads_created | 50 |
| Threads_rejected | 0 |
| Threads_running | 1 |
+-------------------+-------+
5 rows in set (0.00 sec)
Threads_connected :这个数值指的是打开的连接数.
Threads_running :这个数值指的是激活的连接数,这个数值一般远低于connected数值.
Threads_connected 跟show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数
- 查看状态
- 连接状态
show processlist;
- 查看db的一些状态值
show status;
Mysql导出表结构及表数据 (mysqldump用法)
命令行下具体用法如下:mysqldump -u用戶名 -p密码 -d 數據库名 表名 > 脚本名;
- 导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql)
mysqldump -uroot -pdbpasswd -d dbname >db.sql;
- 导出數據库為dbname某张表(test)结构
mysqldump -uroot -pdbpasswd -d dbname test>db.sql;
- 导出數據库為dbname所有表结构及表數據(不加-d)
mysqldump -uroot -pdbpasswd dbname >db.sql;
- 导出數據库為dbname某张表(test)结构及表數據(不加-d)
mysqldump -uroot -pdbpasswd dbname test>db.sql;