字符串匹配比使用数字id要慢一点
使用explain进行mysql解析(加粗的为重要部分)
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)另外一种是根据表中的数据的逻辑关系,将同一个表中的数据按
照某种算法拆分到多个表中,这种切分称为数据的水平切分。
垂直切分的最大特点就是规则简单,实施方便,尤其适合各业务之间的耦合度非常低,相互影响很小,
业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所使用的表分拆到不同的数
据库中。根据不同的表来进行拆分,对应用程序的影响也更小,拆分规则也会比较简单清晰,但由于是
垂直拆分,核心表在高并发下还是会出现瓶颈问题。
水平切分与垂直切分相比,相对来说稍复杂一些。因为要将同一个表中的不同数据拆分到不同的数据库
中,对于应用程序来说,拆分规则本身就较根据表名来拆分更为复杂,后期的数据维护也会更复杂一
些,但对于减轻系统压力来说,这种做法也更彻底,是在高并发大数据下的推荐处理方法
参考资料
高性能电子商务平台构建:架构、设计与开发