MySQL索引原理及慢查询优化
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。
mysql虽然可以使用mysqldump来进行数据的到处,可是在很多场合的需求都不一样,比如我只要导出某个字段,只要导出某些我需要的数据。这个时候mysqldump可能就不大好使了,使用下面的方法则可以解决这个问题。
很多时候我们在项目中需要在mysql的count查询中加入条件,如下例:
select count(pp_id),count(if(view_type='2',true,null )),count(if(bounce_type='1',true,null )),count(DISTINCT program_id),SUM(play_interval) from v_calculate_play where app_id=app_id
通常情况下,可以从两个方面来判断数据库是否设计的比较规范。一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少。若符合这两个条件,则可以说明这个数据库的规范化水平还是比较高的。
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。
服务器上的数据库每周进行备份一次,备份过程不备份mysql自带的数据库,并且只保留最近的5次备份,具体脚本如下,如有问题,欢迎留言指正。
Linux下LNMP环境搭建第一步,mysql的安装,从mysql5.5起,mysql源码安装开始使用cmake,此次使用mysql5.5.20版本,基本过程如下:
LNMP环境搭建后总会遇到各类问题,今天在使用TP搭建网站时,出现could not find driver
错误,正是由于服务器环境没有pdo_mysql
扩展导致。安装过程遇到的问题: