select查询语句该如何实行
发布时间:2022-06-17 14:00 所属栏目:115 来源:互联网
导读:这期内容当中小编将会给大家带来有关select查询语句该如何执行,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 由于存储引擎是可选的,所以 mysql 中,所有的存储引擎其实是共用一个 server层的。回到正题,我们就以这
这期内容当中小编将会给大家带来有关select查询语句该如何执行,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 由于存储引擎是可选的,所以 mysql 中,所有的存储引擎其实是共用一个 server层的。回到正题,我们就以这张图的流程来解决一下小胖的问题。 1.1 连接器 首先,数据库要执行 sql,肯定要先连接数据库吧。这部分工作就是由连接器完成。它负责校验账户密码、获取权限、管理连接数,最终与客户端建立连接等工作。mysql 链接数据库是这样写的: mysql -h 127.0.0.1 -P 3306 -u root -p # 127.0.0.1 : ip 3306 : 端口 root : 用户名 运行命令之后需要输入密码,当然也可以跟在 -p 后面。不过不建议这么做,会有密码泄露的风险。 输入命令后,连接器根据你的账户名密码验证身份。这是会出现两种情况: 账号或密码不对,服务端会返回一个 "ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)" 的错误,退出连接。 验证通过,连接器就会到权限表查出你的权限。之后你有啥权限都要通过这时读到的权限进行判断。 注意,我说的是此时查到的权限。就算你用管理员账号修改了当前用户的权限,此时已连接上的当前用户不受影响,必须要重启 mysql 新的权限才会生效。 1.1.1 查看连接状态 连接完成,如果后续没有做任何事情,这个连接就处于空闲状态。你可以用 show processlist; 命令查看 mysql 的连接信息,如下图,我的数据库连接都是 Sleep 状态的,除了执行 show processlist 操作的连接。 1.1.2 控制连接 如果客户端太长时间没有操作,此连接将会自动断开。这个时间默认是 8 小时,由参数 wait_timeout 控制。如果断开以后继续操作就会收到 "Lost connection to MySQL server during query"的错误。这时就必须重连才能执行请求。 数据库里面有长短连接之分,长连接:连接成功后不断有请求,就会一直使用同一连接。短连接:每次执行完几次请求就断开连接,下次需要再建立。 由于建立连接是比较耗时的操作,所以建议使用长连接。但这会有个问题长连接一直连着就会导致内存占用过大,被系统强行沙雕。从而导致 MySQL 异常重启。如何解决呢?两个方法: 定期断开长连接。使用特定时间,或者程序判断执行一个占用内存大的操作后,断开连接。之后需要操作就重连。 mySQL 5.7 或以上版本,可以在每次执行一个占用内存大的操作后,执行mysql_reset_connection来重新连接资源,此时不需重连或重新做权限认证,但会把连接状态恢复到刚创建完时。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读