1.复用数据库连接

每次访问数据库都需要重新建立一个连接是非常耗时并且耗费性能的,因为每次建立连接都会产生一次I/O操作。此时,有必要对数据库的连接进行复用,通常的做法就是建立一个数据库连接池,将数据库连接放入数据库连接池当中。

常用的开源数据库连接池有dbcp,c3p0,proxool和druid

2.减少数据访问

再查询数据时,尽量减少对同一张表的访问次数。

3.开启查询缓存

MySQL中的查询缓存能够缓存select查询语句及对应的查询结果信息。如果再次有相同的select语句查询数据,则MySQL会从查询缓存中直接返回的数据,而不必再对sql语句进行分析,优化和查询等。

在MySQL命令行中查看是否开启了查询缓存。

show variables like '%query_cache%';

参数说明:

have_query_cache:Mysql在安装的时候是否配置查询缓存。yes表示支持查询缓存,no表示不支持查询缓存。

query_cache_size:查询缓存所能容纳的数据大小,也就是查询缓存的容量。

query_cache_type:查询缓存是否开启。off表示关闭查询缓存;on表示开启查询缓存,但是使用sql_no_cache提示的select查询语句不会使用查询缓存。

MySQL命令行不支持开启查询缓存。

配置方式一:

将query_cache_type选项设置为on,在my.cnf或者是my.ini文件中进行配置,如下

query_cache_size=20M
query_cache_type=on

接下来重启MySQL服务器即可开启查询缓存。

此时查询数据就可以返回查询缓存中的数据

如果不想返回查询缓存中的数据

select sql_no_cache * from t_goods where id=10;

另外一种配置方式:

将query_cache_type选项设置为demand,在my.cnf或者是my.ini文件中进行配置,如下

query_cache_size=20M
query_cache_type=demand

此时,多次执行如下的sql语句才能使用缓存查询

select sql_cache * from t_goods where id = 10;

如果不需要使用查询缓存

select * from t_goods where id =10;

4.使用外部缓存

redis和memcached

5.使用分布式MySQL架构