如何查询mysql里某张表所有记录所占内存
MySQL只会当SQL涉及相关表时,才把表的数据调入内存,并会根据LRU算法,在CACHE中保留上个查询的结果缓冲。
平时,表不是会被加载到内存中去的。
show table status;
然后你可以查看 Data_length 得到数据长度,但只是参考,并不精确。 MyISAM的数据文件就在datadir/dbname中的 tablename.myd, *.myi, *.frm, 但innodb 的都存于一个ibdata文件中。
MySQL占用内存过高怎么办
服务器内存占用过高的解决方法:
1,首先通过任务管理器进行进程排序,查找占用内存较大的程序进程。一般占用内存较大的进程有W3WP、sqlserver、mysqld-nt.exe;
2, 站点进程w3wp 可以在cmd命令行中通过 iisapp 命令来对应是那个网站占用内存较大。可以通过设置回收时间、内存最大使用值或共用进程池来减少内存的占用,但是如果要保证网站的访问质量,还是建议升级至更高型号来解决;
3,数据库 sql server 也可以通过数据库的企业管理器来设置最大内存占用,但是如果网站程序必须要占用较大内存的话,设置后会发生页面报错、打不开等问题;
4,MYSQL本身会占用较大虚拟内存,如果不使用mysql数据库的话,可以将其停止。
如何查看MySQL占用的内存都用在哪了
如何查看MySQL占用的内存都用在哪了
1、查看物理CPU的个数
[[email protected] ~]# cat /proc/cpuinfo |grep “physical id”|sort |uniq|wc -l
1
2、查看逻辑CPU的个数
[[email protected] ~]# cat /proc/cpuinfo |grep “processor”|wc -l
4
3、查看CPU是几核(即,核心数)
[[email protected] ~]# cat /proc/cpuinfo |grep “cores”|uniq
cpu cores : 4
4、查看CPU的主频
[[email protected] ~]# cat /proc/cpuinfo |grep MHz|uniq
cpu MHz : 2499.982
5、当前操作系统内核信息
[[email protected] ~]# uname -a
Linux MysqlCluster01 2.6.32-431.20.3.el6.x86_64 #1 SMP Thu Jun 19 21:14:45 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
6、当前操作系统发行版信息
[[email protected] ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
7、内存使用情况
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 7863 2738 5125 0 141 835
-/+ buffers/cache: 1761 6102
Swap: 3967 0 3967
如何查看mysql数据库连接数和内存占用
命令: show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist;只列出前100条,如果想全列出请使用show full processlist;
mysql show
processlist;
命令: show status;
命令:show status like '%下面变量%';
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects
尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables
当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT
DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete
请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key
请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd
请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write
请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests
请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests
请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections
同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables
已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries
要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多少秒
使用rdbtools+MySQL对Redis进行内存占用分析
线上某IM业务基于Redis作为持久化层实现,近期出现Redis内存告警,于是对线上Redis各Key内存占用进行分析,便于进行业务改造。
虽然Redis4.0以后提供了memory命令进行内存查询,但是对于存在大量业务key来说可能不够方便,只看统计结果又不够详细不好定位具体业务,选择使用rdbtools来进行分析。
运维提供了阿里云Redis自动备份文件 backupfile.rdb 。当然也可以自行到Redis目录下获取 dump.rdb 文件。
我这里使用的是linux环境,确保python及pip已经正确安装。
rdbtools项目地址:
rdbtools安装,以pip3为例:
rdbtools生成内存报告:(更多使用方法可以参考官方文档)
执行内存分析后CPU会跑满,耐心等待即可。我这里630M共计500万个key的rdb文件运行了接近10分钟。
执行完成后在当前目录文件生成了内存报告文件 memory.csv 。
由于生成的内存报告文件 memory.csv 可能很大,直接打开进行分析处理存在限制,将数据导入MySQL。
创建表:
此表字段与csv文件字段一一对应,然后将csv文件数据导入该表。
最后通过排序以及key的模糊查询等手段,即可完成Redis内存分析。
如何知道mysql数据库的剩余空间?
网页显示如下文字'
mysql的错误:查询错误
错误号码: 1064年你有一个错误在你的sql语法;检查手册,对应于你的mysql服务器版本为正确的语法来使用近''在1号线
日期:周三, 2007年11月28日21时14分26秒
叶: 219.225.101.231
浏览器: mozilla/4.0 (兼容; msie 7.0 ;窗户新台币6.0 ; slcc1 ;的。 net clr 2.0.50727 ;媒体中心电脑5.0 ;的。 net clr 3.0.04506 ;的。 net clr 1.1.4322 ; maxthon 2.0 )
referer :
Mysql错误代码
mysql的出错代码表,根据mysql的头文件mysql/include/mysqld_error.h整理而成
1005:创建表失败
1006:创建数据库失败
1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1009:不能删除数据库文件导致删除数据库失败
1010:不能删除数据目录导致删除数据库失败
1011:删除数据库文件失败
1012:不能读取系统表中的记录
1020:记录已被其他用户修改
1021:硬盘剩余空间不足,请加大硬盘可用空间
1022:关键字重复,更改记录失败
1023:关闭时发生错误
1024:读文件错误
1025:更改名字时发生错误
1026:写文件错误
1032:记录不存在
1036:数据表是只读的,不能对它进行修改
1037:系统内存不足,请重启数据库或重启服务器
1038:用于排序的内存不足,请增大排序缓冲区
1040:已到达数据库的最大连接数,请加大数据库可用连接数
1041:系统内存不足
1042:无效的主机名
1043:无效连接
1044:当前用户没有访问数据库的权限
1045:不能连接数据库,用户名或密码错误
1048:字段不能为空
1049:数据库不存在
1050:数据表已存在
1051:数据表不存在
1054:字段不存在
1064 处理控制请求时,服务出现意外情况。
1065:无效的SQL语句,SQL语句为空
1081:不能建立Socket连接
1114:数据表已满,不能容纳任何记录
1116:打开的数据表太多
1129:数据库出现异常,请重启数据库
1130:连接数据库失败,没有连接数据库的权限
1133:数据库用户不存在
1141:当前用户无权访问数据库
1142:当前用户无权访问数据表
1143:当前用户无权访问数据表中的字段
1146:数据表不存在
1147:未定义用户对数据表的访问权限
1149:SQL语句语法错误
1158:网络错误,出现读错误,请检查网络连接状况
1159:网络错误,读超时,请检查网络连接状况
1160:网络错误,出现写错误,请检查网络连接状况
1161:网络错误,写超时,请检查网络连接状况
1062:字段值重复,入库失败
1169:字段值重复,更新记录失败
1177:打开数据表失败
1180:提交事务失败
1181:回滚事务失败
1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库
1205:加锁超时
1211:当前用户没有创建用户的权限
1216:外键约束检查失败,更新子表记录失败
1217:外键约束检查失败,删除或修改主表记录失败
1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器
1227:权限不足,您无权进行此操作
1235:MySQL版本过低,不具有本功
更多