1.程序员认知中的数据库
普遍的认知中: MySQL可以建库建表建索引,然后就是执行增删改查去更新和查询里面的数据。
深层次问题:比如死锁异常、SQL性能太差、异常报错,等等。
生产层面的问题:在生产环境下,如何基于MySQL底层原理去进行分析、排查和定位。
2.MySQL驱动程序
要在Java系统中访问MySQL数据库,必须将MySQL驱动程序添加到系统依赖项中。使用这个MySQL驱动程序,您可以与MySQL数据库建立连接,然后执行各种SQL语句。
上图显示了引入Maven配置的MySQL驱动程序。
数据库与应用系统的连接
要访问数据库,必须建立与数据库的网络连接。而这个连接是通过MySQL驱动建立的。他将与底层的数据库建立网络连接,然后他可以向数据库服务器发送请求。
当Java系统与数据库之间存在网络连接时,Java代码可以基于这种连接执行各种SQL语句。
所以对于用Java语言开发的系统,MySQL会提供Java版本的MySQL驱动,对于PHP、Perl等各种常用编程语言,MySQL会提供相应语言的MySQL驱动,这样用各种语言编写的系统就可以通过MySQL驱动访问数据库。
3.数据库连接池
Java开发的Web系统部署在Tomcat中,所以Tomcat本身必须有多个线程来处理同时收到的多个请求。
单次连接的建立、销毁
如果Tomcat中的每一个线程在每次访问数据库的时候都会创建一个基于MySQL驱动的数据库连接,然后执行SQL语句,执行完后再破坏数据库连接。
当Tomcat中的数百个线程同时频繁地创建数据库连接,执行SQL语句,然后频繁地销毁数据库连接时,就会发生上述单个连接的建立和销毁。其实是很不合理的。
数据库连接池
使用数据库连接池意味着在一个池中维护多个数据库连接,允许多个线程使用不同的数据库连接来执行SQL语句。然后,在执行SQL语句后,不要破坏数据库连接,而是将连接放回池中,以后可以使用。
基于这样的数据库连接池机制,可以解决多线程使用多个数据库连接并发执行SQL语句的问题,也避免了数据库连接用完之后被破坏的问题。
常见的数据库连接池有DBCP、C3P0、德鲁伊等。
4.MySQL数据库的连接池的作用
以上是Tomcat中用来连接数据库的数据库连接池,主要用于多线程并发。
在数据库端,也有一个连接池。要在系统和MySQL数据库之间建立很多连接,MySQL也必须和系统保持很多连接,所以MySQL架构系统的第一个环节就是连接池。
每次系统与MySQL建立连接时,根据系统传递过去的账号和密码,验证账号密码和库表的权限就好了。