1、PDO
PDO就是一个接口,可以让PHP和各种数据库进行交互。虽然PDO支持预处理和数据绑定,但是由于查询效率低,所以笔者不推荐使用
2、数据库的优化
基本语句优化原则
1、尽量避免在列上进行运算,
eg:select * from t where YEAR(d)>=2011 优化为 select * from t where d >= ‘2011-01-01’;
2、使用JOIN连接时,尽量使用小结果集驱动大结果集(根据实际需要可以调整)
3、注意LIKE的模糊操作的使用,避免%%
eg: select * from where name like ‘%de%’ 优化为 select * from where name>=’de’ and name <‘df’
4、列出需要的字段 主要是节约内存
5、使用批量插入 节省交互
6、limit的基数比较大的时候,使用between,在取比较后面的数据时候,使用desc把数据反向查找,减少对数据的扫描
7、不用适用rand函数获取多条记录
8、避免使用NULL
9、不要使用count(id),而应该吃用count(*)?这是为什么
10、不要做无所谓的排序操作。
5.2.2 索引与性能分析
MyISAM注重性能,InnoDB注重事物————————–这句话是错的
1、选择存储引擎
(1)采用MyISAM引擎
R/W > 100 : 1且update相对较少
并发不高,不需要事务
表数据量小
硬件资源有限
(2)采用InnoDB引擎
R/W比较小,且频繁更新大字段
表数据量超过1000万,并发高
安全性和可用性要求高
(3)采用Momory引擎
有足够的内存
需要定期归档的数据 对数据一致性要求不高
2、MySQl服务器调整优化措施
1)关闭不必要的二进制日志和慢查询日志
2)适度使用Query Cache
3)增加mysql的最大连接数
4)从表中删除大量的数据后,使用OPTIMIZE TABLE TableName
5.3
5.3.1 范式与反范式:现在硬盘的存储条件是允许牺牲物理内存来换取查询时间的。
5.3.2 数据库分区:把数据表的文件和索引分散存储在不同的个物理文件中,对于数据量超过百万的数据,尽量使用数据库分区,可以提高效率的。对于分区,通常使用RANGE类型(在实际开发中还没有试过)
5.3.3 数据库分表:分表是把一个表分成几个表,进行分表查询时候,可以用union或者做一个视图。数据库分表分为:水平分表和垂直分表。(在实际开发中还没有试过)