mysql应用中常用到的优化

使用连接池
对于访问数据库来说,建立连接的代价比较昂贵,因此,我们有必要建立”连接池”以提高访问的性能。我们可以把连接当作对象或者设备,池中又有许多已经建立的连接,访问本来需要与数据库的连接的地方,都改为和池相连,池临时分配连接供访问使用,结果返回后,访问将连接交还。
减少对mysql 的访问
避免对同一数据做重复检索:
应用中需要理清楚对数据库的访问逻辑,需要对相同表的访问,尽量集中在相同sql访问,一次提取结果,减少对数据库的重复访问。
使用mysql query cache:
作用:查询缓存存储select 查询的文本以及发送给客户端的相应结果。如果随后收到一个相同的查询,服务器从查询缓存中重新得到查询结果,而不再需要解析和执行查询。
适用范围:不发生数据更新的表。当表更改(包括表结构和表数据)后,查询缓存值的相关条目被清空。
查询缓存的主要参数设置:
show variables like ‘%query_cache%’;
have_query_cache 表明服务器在安装使已经配置了高速缓存
query_cache_size 表明缓存区大小,单位为m
query_cache_type 的变量值从0 到2,含义分别为
0 或者off(缓存关闭)
1 或者on(缓存打开,使用sql_no_cache 的select 除外)
2 或者demand(只有带sql_cache 的select 语句提供高速缓存)
在show status 中,你可以监视查询缓存的性能:
变量含义
qcache_queries_in_cache 在缓存中已注册的查询数目
qcache_inserts 被加入到缓存中的查询数目
qcache_hits 缓存采样数数目
qcache_lowmem_prunes 因为缺少内存而被从缓存中删除的查询数目
qcache_not_cached 没有被缓存的查询数目( 不能被缓存的, 或由于
query_cache_type)
qcache_free_memory 查询缓存的空闲内存总数
qcache_free_blocks 查询缓存中的空闲内存块的数目
qcache_total_blocks 查询缓存中的块的总数目
加cache层:
cache(高速缓存)、memory(内存)、hard disk(硬盘)都是数据存取单元,但存取速度却有很大差异,呈依次递减的顺序。对于cpu 来说,它可以从距离自己最近的cache 高速地存取数据,而不是从内存和硬盘以低几个数量级的速度来存取数据。而cache 中所存储的数据,往往是cpu 要反复存取的数据,有特定的机制(或程序)来保证cache 内数据的命中率(hit rate)。因此,cpu 存取数据的速度在应用高速缓存后得到了巨大的提高。
因为将数据写入高速缓存的任务由cache manager 负责,所以对用户来说高速缓存的内容肯定是只读的。需要你做的工作很少,程序中的sql 语句和直接访问dbms 时没有分别,返回的结果也看不出有什么差别。而数据库厂商往往会在db server 的配置文件中提供与cache 相关的参数,通过修改它们,可针对我们的应用优化cache 的管理。

更多相关文章请关注PHP中文网(www.php.cn)!

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享