最新消息:阿里云双12优惠,史上最低折扣。

让面试官瞠目结舌的数据库优化技术!(上)

服务器租用 aliyun 251浏览

网址备案是什么?网址等同于域名URL吗?

上网的实质就是获取网址对应主机上的数据并在用户主机上进行展示(浏览器上)。由此可见,网址是网站的直接入口,网站拥有了网址,用户就能直达网站。

数据库想必大家不陌生,即使您不是搞开发的也应该听说过数据库,这是做软件研发、数据分析等等不可或缺的一环!

本文主要是针对mysql进行举例,如果想要看oracle的小伙伴恐怕要失望了,不过看本文能促进您对通用数据库技术的理解。

首先来一个Mysql的震撼架构图

 

Mysql架构图

既然图上来了,让我们看图说话!

一、数据库优化——连接器

如果我们要对数据库进行操作,无论是CURD我们都需要跟连接器进行对接。

连接器负责跟客户端进行联系、获取权限、维持链接和管理链接!

当我们简历里链接的时候回进行TCP握手,下一步就是认证我们的身份,一切无误后我们输入用户名与密码即可。

当我们完成验证后,就会跟Mysql数据库进行互动,但这个时候我们是处于空闲状态的。

1空闲连接列表应该如何查看?

下面这张图中就用笔者自己测试数据库执行命令的结果,其中Command列显示为Sleep的这一行,就表示现在系统里面有一个空闲连接。

 

空闲连接

当然笔者数据库是有连接时长限制的,如果我们与数据库太久没进行互动,则就会自动端口,释放连接!这个时间参数是wait_timeout控制住的,默认连接时长为8小时。

当然,断开后如果继续操作会报错,如果想要重新操作数据库需要再次连接。

是的,就是超出了超时时间,然后写代码的人也没注意到这个细节,所以才会出现这个问题。

把超时时间改得长一点,问题就解决了。

在实际开发中这种连接参数我们不一定接触的到,但知道没坏处,最起码遇到问题帮你开阔思路,不会变成无头苍蝇。

2长连接

上述问题中我们说过,可以使用重新连接解决断开的问题,那除此之外还有其他的解决方式吗?

长连接也能解决这个问题,但是这里有个缺点,使用长连接之后,内存会飙得很快,我们知道MySQL在执行过程中临时使用的内存是管理在连接对象里面的。只有在链接断开的时候才能得到释放,那如果一直使用长连接,那就会导致OOM(Out Of Memory),会导致MySQL重启,在JVM里面就会导致频繁的Full GC。

2.1解决办法

可以定期断开长连接,当使用一段时间后程序内存占据过大的时候,断开长连接,需要的时候重新连接即可!

2.2优雅的解决办法

执行比较大的一个查询后,执行mysql_reset_connection可以重新初始化连接资源。这个过程相比上面一种会好点,不需要重连,但是会初始化连接的状态。

如果感兴趣可以继续阅读《让面试官瞠目结舌的数据库优化技术!(下)》

云数据库性能优化到最优,可以一键解决部署、性能、备份等问题,现今有优惠哦!

转载请注明:小猪云服务器租用推荐 » 让面试官瞠目结舌的数据库优化技术!(上)