。如果服务器的平均负载已经很高,mysql占用了块100的cpu资源,说明mysql服务器很忙了。
f3在数据库服务器上使用iostat命令,看看磁盘IO,如果block住的操作比较多的话,说明数据库操作还是过于频繁了,磁盘都响应不急了。4建议打开mysql的慢查询日志,这样grepselect看一下日志中的慢查询的数量,如果数量较多,说明慢查询的数量很多,需要进行调整了。5如果有一天数据库无法插入了,需要检查一下数据库表是不是过大了。32位的操作系统上一个表最大的容量是232这么大。不过还是建议增加一个数据库操作的逻辑层,在数据库操作的前后记录下操作的时间,进行统计上报,利用监控程序来报警相关负责人,这样可以及早的知道数据库是瓶颈,提前做出优化。建索引时需要考虑:1数据库的索引要做到越少越好:因为每次更新都需要更新索引,索引过多就会降低写入的速度2最窄的字段放在键的左边:这样提高了索引中每一个点的基数,带来更好的索引读写性能3尽量避免filesort排序、临时表和表扫描:对于大表,全表扫描会导致大量的磁盘IO的操作,会导致操作非常的缓慢4对于大表,尽量不要将索引建在字符串类型的列上,字符串的匹配是很费时的,需要付出很高的性能代价,如果一定有必要,建议对字符串列进行hash后取一个整形的值来进行索引。3如果更新操作有点慢,而读操作的响应要求不需要很及时的话,可以考虑利用mysql的主从热备来分担读写的压力。毕竟对数据库的操作,写少读多。因此,我们将对数据库的写操作放到mysql的主服务器上,利用mysql的热备,我们在备份的数据库服务器上进行读操作,由于可以有多个热备mysql,于是可以将读操作分布在多个热备上面,从而将读操作均衡开来,提高读操作的性能。4缓存的使用缓存是一切后台程序的根本,因为80的请求是对应20的数据,我们只需要少量的内存将20的数据缓存起来,就可以大大的满足我们系统需求,何乐而不为呢。1mysql设置中尽量增加keycache,threadcache、查询的cache2在应用程序层增加一个memcached这样的通用cache3对于少量数据,但是操作频繁的表使用mysql提供的内存heap表,可以获得极高的写入和读取速度
f5数据库的设计上进行优化对于传统的数据库设计我们讲究建模范式,避免数据的冗余从而导致脏数据。然而在我们实际的应用中需要根据情况来使用第三范式的一些规则,对于一些频繁需要在多个地方出现的数据,如同一个论坛这种用户和主题以及回复等有关联的应用中,如果我们将用户同r