1:使用数据库连接池
-
什么是数据库连接池?
- 数据库连接池(Connection pooling)是 程序启动时 建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。
-
为什么要使用数据连接池?
- 通过数据库连接池可以直接将某个数据连接对象分配给应用使用,由于数据连接对象是程序初始化时存放在连接池中,这时直接使用就省去了 创建新连接 所耗费的资源。连接返回后,本次访问将连接交还给 “连接池” 以供新的访问使用。
-
数据库连接池运行机制
- (1) 程序初始化时创建连接池
- (2) 使用时向连接池申请可用连接
- (3) 使用完毕,将连接返还给连接池
- (4) 程序退出时,断开所有连接,并释放资源
传统访问数据库模式
image数据库连接池访问数据库模式
image
感谢 && 参考文章
PHP 设计模式系列 - 对象池模式(Object Pool)
2:减少对MySQL的访问
-
2.1:避免对同一数据做重复查询(减少数据库查询访问)
-
2.2:使用查询缓存(Query Cache)
-
作用:存储 select 查询的文本以及相应的结果。如果之后收到一个 相同的查询。服务器会从 查询缓存 重新得到查询结果,而不再需要 解析 和 执行 查询
-
查询缓存 的使用对象是 更新不频繁 的表;当表更改(数据 || 结构)后,查询缓存 值相关条目将被清空。
-
查询缓存查看
QUERY_CACHE参数及开启.pngmysql> show variables like '%query_cache%'; #开启查询缓存 mysql> set session query_cache_type = ON;
-
- 扩展-MySQL体系结构
2.3:增加 Cache 层(应用层实现)
3:负载均衡(Load Balance)
-
3.1:主从复制,读写分离
-
3.2:使用分布式数据库架构
4:其他优化措施
-
4.1:对于使用MyISAM的数据表,定期执行
optimize table tableName
操作。- 注意,在OPTIMIZE TABLE运行过程中,MySQL会锁定表。
-
4.2:充分使用列 存在默认值 的事实。只有当插入值不同与默认值时,才明确插入值。因为这会减少 MySQL 所做的 语法分析 从而提高插入速度。
-
4.3:表的非主键字段尽量不要使用 自增长变量。
网友评论