以下经验,均是血和泪的教训,为了避免自己再犯,特此记录。
1 图片不能保存在数据库中。
此话不绝对,但是如果图片很多(几乎每天数据中均存在图片),那就千万不能把图片放在数据库中。
对性能影响:表中数据30万,执行查询语句,5分钟后仍在查询(这是程序不能接受的)。
去掉图片,执行查询语句,执行时间不到5s。
2 更新语句的更新条件尽量具体。
上面的话的意思是:如果更新数据,符合条件的数据很多,尽量把条件具体些,是更新的数据由多条变为一条。
为什么这么做:当数据上万、上百万时,每次更新操作将会时数据库执行时间过长,导致正常的业务流程不能正常执行(如:与数据库连接超时)。
3 mysql字符集一定要慎重选择。
笔者常用的是:字符集:utf-8, 核对:utf8_general_ci。
4不同的搜索引擎对性能影响不同。
mysql数据库常用的搜索引擎有两种:InnoDB和MyISAM 。其中innodb存储引擎,特点支持外键、行锁、非锁定读(默认情况下读取不会产生锁)、mysql-4.1开始支持每个innodb引擎的表单独放到一个表空间里。但是备份还原比较困难。 MyISam不支持事物,但是备份还原比较简单。
5建立适当冗余
对于数据库中的字段建立适当冗余,目的是牺牲空间换时间.
6一个方法尽量做最少的事
一个方法尽量做最少的事是指如果方法A既能支持a操作,又能支持b操作。比如一个方法既能支持界面A的综合查询,又能支持界面B的详细查看,那方法A中包含的字段就会很多,可能导致查询缓慢。
7适当的建立索引
对经常查询的字段可以适当的建立索引,建立索引的优点在于可以加快查询的速度,但是缺点在于会降低增删改操作的时间。所以索引的建立要适当。