故障案例:phpadmin点击打开一个数据库卡死

原创 2015年11月20日 13:27:11

有用户反馈show processlist列表出现一堆查询,导致CPU直接跑满24核.....


后来查看ip来源于网页端的phpadmin,但是开发人员均反馈没有执行该操作,只是有同事点击打开了这个库,仔细看了下这个出问题的sql的表机构,发现原来它是一个写得超级烂的VIEW

 mysql> show create table t_yqrx_contact_user_redit\G
*************************** 1. row ***************************
                View: t_yqrx_contact_user_redit
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`webapp`@`%` SQL SECURITY DEFINER VIEW `t_yqrx_contact_user_redit` AS select `uc`.`id` AS `id`,`uc`.`user_id` AS `user_id`,`uc`.`contact_user_id` AS `contact_user_id`,`u`.`mobilephone` AS `mobilephone`,ifnull(`uc`.`c_comments`,`u`.`mobilephone`) AS `c_comments`,(select cast(ifnull(max(`pl`.`serial_number`),(select min(`t_yqrx_preauth_level`.`serial_number`) from `t_yqrx_preauth_level`)) as decimal(10,0)) from (`t_yqrx_preauth_level` `pl` join `t_yqrx_user_preauth` `uath2`) where ((`uath2`.`user_id` = `uc`.`contact_user_id`) and (`uath2`.`contact_user_id` = `uc`.`user_id`) and (`uath2`.`amount` >= ifnull(`pl`.`level_amount`,0)))) AS `credit_level`,(select ifnull(sum(`uath2`.`amount`),0) from `t_yqrx_user_preauth` `uath2` where ((`uath2`.`user_id` = `uc`.`contact_user_id`) and (`uath2`.`contact_user_id` = `uc`.`user_id`))) AS `credit_level_amount`,ifnull(sum(`uath`.`amount`),0) AS `worth_amount`,count((case when (`uath`.`amount` > 0) then 1 else NULL end)) AS `preauthed_users`,(select ifnull(sum(`up`.`amount`),0) from `t_yqrx_user_preauth` `up` where (`up`.`contact_user_id` = `u`.`id`)) AS `preauth_amount` from ((`t_yqrx_user_contact` `uc` join `t_yqrx_user` `u` on((`uc`.`contact_user_id` = `u`.`id`))) left join `t_yqrx_user_preauth` `uath` on((`u`.`id` = `uath`.`user_id`))) group by `uc`.`id`
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.00 sec)

但是为什么phpadmin打开db时会有这种查询呢,我复现了一下,点击这个按钮


打开general_log查看它到底做了哪些事


好吧,问题就在这了,phpadmin打开一个db时做了这些莫名其妙的工作,如果只是正常的use database命令,它做的事是这样的


从截图可以看到,use一个db时会查看下该库下所有表的filed list,这也能解释如果一个db下库多达3000以上时,use非常慢



MySQL数据库的10大经典错误案例

学习任何一门技术的同时,其实就是自我修炼的过程。沉下心,尝试去拥抱数据的世界! 案例一 Too many connections (连接数过多,导致连接不上数据库,业务无法正常进行)...
  • hacker_Lees
  • hacker_Lees
  • 2017年08月03日 10:53
  • 524

(三)数据库故障处理的案例-数据库可以查询不能做更新操作

sqlplus / as sysdba   SQL*Plus: Release 10.2.0.4.0 - Production on Thu May 15 14:07:21 2014 ...
  • alangmei
  • alangmei
  • 2014年05月27日 08:06
  • 786

搭建phpAdmin数据库管理系统

1. 将phpmyadmin的"站点文件包" 放在一个目录下 2. 打开apache的虚拟主机配置文件:     apache/conf/extra/http-vhost.conf 并从中...
  • u014660247
  • u014660247
  • 2016年10月24日 23:16
  • 141

我在对PHPAdmin进行数据库文件导入时遇到的几个问题,备忘

注:这是今天我个人遇到的问题,百度老半天也没办法,自己费了好多时间时间,仅作参考,如果有人能告诉我更好地方法,自是感激不尽。 -------------------------- 操作背景: 我需要从...
  • u011415782
  • u011415782
  • 2016年05月11日 16:11
  • 992

phpmyadmin然后点击左侧进入mysql数据库,在顶部点击“mysql”进入sql输入界面。输入以下命令

用phpmyadmin更改root密码首先用root账号登陆phpmyadmin,然后点击左侧进入mysql数据库,在顶部点击“mysql”进入sql输入界面。输入以下命令:update user s...
  • forest_fire
  • forest_fire
  • 2016年03月21日 10:52
  • 472

大型网站典型故障案例分析

写日志也会引发故障故障现象:某应用服务器集群发布后不久就出现多台服务器相继报警,硬盘可用空间低于警戒值,并且很快有服务器宕机,登录到线上服务器,发现log文件夹里的文件迅速增加,不断消耗磁盘空间。 原...
  • Edwingu
  • Edwingu
  • 2015年03月09日 23:04
  • 1561

phpmyadmin数据库导入导出方法

 phpmyadmin数据库导出方法第一步,登陆phpmyadmin管理平台;第二步,在phpmyadmin的左上方选择你的数据库,然后再选择顶部的"导出" 进入数据库导出界面;第三步,选择你将要在数...
  • wengman
  • wengman
  • 2009年11月28日 21:52
  • 2395

MySql修改密码后PhpAdmin无法登陆

安装wamp集成服务器并配置完成后,输入“http://localhost/phpmyadmin/”可以进入mysql数据库在线客户端,但是当你修改了mysql管理员root用户密码后再输入“http...
  • nangongyanya
  • nangongyanya
  • 2016年06月06日 00:00
  • 1178

PHPAdmin的安装和配置

其实phpadmin就是一个产品,用于管理mysql数据库的,毕竟很多数据库服务器不能够公开连接,所以只能够使用http的方式来进行连接管理。下载phpadmin( http://xj-http.sk...
  • zzk8994073
  • zzk8994073
  • 2006年03月13日 23:33
  • 7585

CentOs6.6 安装PHPAdmin

安装PHPAdmin之前请确认你的Apache服务器和Mysql5.5(以上)已经安装好了去官网上下载phpadmin.tar.gz然后上传到服务器,官网链接tar -zxvf phpAdmin.ta...
  • tonydandelion2014
  • tonydandelion2014
  • 2016年03月18日 20:25
  • 1094
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:故障案例:phpadmin点击打开一个数据库卡死
举报原因:
原因补充:

(最多只允许输入30个字)