数据库优化

字符串匹配比使用数字id要慢一点


使用explain进行mysql解析(加粗的为重要部分)


bank_id 没有索引的情况下
bank_id创建了普通索引

possible_keys

列出可能用到的索引


rows

显示执行查询的行数,越大越不好.通过加的索引,可以大大减少检索的行数


mysql不同存储引擎

MySQL 最常用的存储引擎为 MyISAM、 InnoDB,其中 InnoDB 提供事务安全表,其他存储引擎都是非

事务安全表。MyISAM 是 MySQL 的默认存储引擎,不支持事务,也不支持外键,但其访问速度快,对

事务完整性没有要求。InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起

MyISAM 存储引擎, InnoDB 写的处理效率要差一些,并且会占用更多的磁盘空间以保留数据和索引。


Mysql可扩展方案

MySQL Replication(复制)

即 MySQL 的主从复制,是使用最多的一种架构,如图 2-6 所示,主服务器将SQL 记录到日志文件,从

服务器读取这个日志文件后将 SQL 应用到自身。这是我们在实际应用中使用最广的一种方案,也是优

先推荐方案。

MySQL 数据切分

通过MySQL Replication 方案可以从一定程序上缓解平台的压力,一旦数据库过于庞大,尤其是当写入

过于频繁时,很难由一台主机支撑,还是会再次面临瓶颈。这时我们可以考虑数据库切分技术。

关于数据切分,它核心思想不是做成类似分布式数据库。简单来说,切分就是指通过某种特定的算法,

将存放在同一个库(表)中的数据分散存放到多个库(表)中,以达到分散单台设备负载的效果。数据

切分同时还可以提高系统的总体可用性,因为单台设备死机之后,只有这台设备上的数据不可用,其他

设备的数据还可继续对外提供服务。

数据切分根据其切分规则可以分为两种:1)一种是按照不同的表来切分到不同的数据库(主机)之上,

这种切分可以称为数据的垂直切分;2)另外一种是根据表中的数据的逻辑关系,将同一个表中的数据按

照某种算法拆分到多个表中,这种切分称为数据的水平切分。

垂直切分的最大特点就是规则简单,实施方便,尤其适合各业务之间的耦合度非常低,相互影响很小,

业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所使用的表分拆到不同的数

据库中。根据不同的表来进行拆分,对应用程序的影响也更小,拆分规则也会比较简单清晰,但由于是

垂直拆分,核心表在高并发下还是会出现瓶颈问题

水平切分与垂直切分相比,相对来说稍复杂一些。因为要将同一个表中的不同数据拆分到不同的数据库

中,对于应用程序来说,拆分规则本身就较根据表名来拆分更为复杂,后期的数据维护也会更复杂一

些,但对于减轻系统压力来说,这种做法也更彻底,是在高并发大数据下的推荐处理方法


参考资料

高性能电子商务平台构建:架构、设计与开发

你可能感兴趣的:(数据库优化)