美文网首页
MySql数据库的一些操作

MySql数据库的一些操作

作者: weisen | 来源:发表于2019-05-06 15:13 被阅读0次

一、删除数据后磁盘空间的释放总结

1、drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ;

2、truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM 。truncate table其实有点类似于drop table 然后creat,只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等。所以速度上应该是接近drop table的速度;

3、delete from table_name删除表的全部数据,对于MyISAM 会立刻释放磁盘空间 (应该是做了特别处理,也比较合理),InnoDB 不会释放磁盘空间;

4、对于delete from table_name where xxx带条件的删除, 不管是innodb还是MyISAM都不会释放磁盘空间;

5、delete操作以后使用optimize table table_name 会立刻释放磁盘空间。不管是innodb还是myisam 。所以要想达到释放磁盘空间的目的,delete以后执行optimize table 操作。

查看表占用硬盘空间大小的SQL语句如下:(默认用M做展示单位)

SELECT TABLE_NAME, (DATA_LENGTH+INDEX_LENGTH)/1048576 as size_Mb, TABLE_ROWS 
FROM information_schema.tables 
WHERE TABLE_SCHEMA='wow_tencent_1' 
AND TABLE_NAME='user'

然后执行空间优化语句:

optimize table  user

6、delete from表以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间。

二、mysql binlog日志自动清理及手动删除

当开启mysql数据库log-bin时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。
有三种解决方法:

1.关闭mysql的binlog;

2.设置expire_logs_days;

vim /etc/my.cnf //修改expire_logs_days,x是自动删除的天数,一般将x设置为短点,如10
expire_logs_days = 3 //二进制日志自动删除的天数。默认值为0,表示“没有自动删除”

此方法需要重启mysql,

3.手动清除binlog文件

mysql -u root -p
PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY); 
//删除10天前的MySQL binlog日志,附录2有关于PURGE MASTER LOGS手动删除用法及示例
show master logs;

三、MySQL连接数查询

1.查看MySQL连接数,查看当前处于连接未关闭状态的进程列表,

 show full processlist;  

若不加上full选项,则最多显示100条记录。
若以root帐号登录,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。

在调试程序时,如怀疑应用程序中存在申请DB连接未释放的情况,可以通过该命令查询连接数(以应用程序中的user登录)。如程序运行过程中连接数越来越多,则可以判断程序中有DB资源未释放。

如需修改允许建立的最大连接数,win环境下需修改/mysql-advanced-5.6.19-win32/mysql-test/suite/ndb/下的my.cnf文件。
set-variable=max_user_connections=30 这个就是单用户的连接数
set-variable=max_connections=800 这个是全局的限制连接数

2.查看MySQL数据库状态
命令:该命令会将DB所有的状态打印出来,如需其中特定的项可以加上like ‘%变量名称%’

show status like '%Threads%';

Threads_cached    0 mysql管理的线程池中还有多少可以被复用的资源
Threads_connected    152 打开的连接数
Threads_created    550 表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器
Threads_running    1 激活的连接数,这个数值一般远低于connected数值,准确的来说,Threads_running是代表当前并发数

show status like '%connect%';
Connections,试图连接到(不管是否成功)MySQL服务器的连接数。
Max_used_connections,服务器启动后已经同时使用的连接的最大数量。
Threads_connected,当前的连接数。

show variables like 'thread_cache_size'; 

Max_used_connections 同时使用的连接的最大数目。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多少秒。

show variables like '%max_connections%'; ##查询数据库当前设置的最大连接数

参考文章

MySQL删除数据后磁盘空间的释放总结
mysql binlog日志自动清理及手动删除

相关文章

  • 3 MySQL数据库操作

    2 MySQL数据库操作 3.1 MySQL操作数据库 3.2 MySQL操作数据表 3.2.1 MySQL创建数...

  • python对mysql的操作

    python对mysql的操作 Mysql 常见操作 数据库操作 PS:用户权限相关数据保存在mysql数据库的u...

  • Shell脚本操作-6

    Shell操作数据库MySQL SQL基本操作 安装MySql数据库 连接数据库 mysql -u root -p...

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • 6PHP 操作 MySQL 数据库

    [TOC] PHP 操作 MySQL 数据库 连接 MySQL 服务器,连接数据库 进行数据库的操作(CURD) ...

  • MySQL

    这篇文章主要介绍MySQL的一些操作性的知识。 数据库的操作 创建数据库 删除数据库 表的操作 创建表 修改表 添...

  • Go操作MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语...

  • MySQL基本语句-01

    MySQL不区分大小写!!! 对MySQL的操作 登录MySQL 展示所有数据库 展示所有表 退出 对数据库的操作...

  • 数据库学习笔记-mysql数据库的基本操作以及一些高级操作

    〇、数据库学习阶段: 基础阶段:mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储...

  • Django事务操作

    在Django中实现数据库的事务操作 在学习MySQL数据库时,MySQL数据库是支持原子操作的. 什么是数据库的...

网友评论

      本文标题:MySql数据库的一些操作

      本文链接:https://www.haomeiwen.com/subject/iwwroqtx.html