1.大表数据查询,怎么优化
- 优化 SQL和索引;
- 增加缓存,如 memcached、redis;
- 读写分离,可以采用主从复制,也可以采用主主复制;
- 使用 MySQL 自带的分区表,这对应用是透明的,无需改代码,但 SQL 语句是要针对分区表做优化的;
- 做垂直拆分,即根据模块的耦合度,将一个大的系统分为多个小的系统;
- 做水平拆分,要选择一个合理的 sharding key,为了有好的查询效率,表结果也要改动,做一定的冗余,应用也要改,sql 种尽量带 sharding key,将数据定位到限定的表上去查,而不是扫描全部的表。
把一个表按照某个字段,拆分到多个表里面,这个字段叫 sharding-key。
2.数据库结构如何优化?
-
将字段很多的表分解成多个表
对于字段较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。 -
增加中间表
对于需要经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,将需要通过联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询。 -
增加冗余字段
设计数据表时应尽量遵循范式理论的规约,尽可能的减少冗余字段,让数据库设计看起来精致、优雅。但是,合理的加入冗余字段可以提高查询速度。表的规范化程度越高,表和表之间的关系越多,需要连接查询的情况也就越多,性能也就越差。
注意:冗余字段的值在一个表中修改了,就要想办法在其他表中更新,否则就会导致数据不一致的问题。
活动地址:CSDN21天学习挑战赛