- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HybridDBforMySQL.PDF
HybridDB for MySQL
最佳实践
HybridDB for MySQL 最佳实践
最佳实践
分区表的设计
用户存有海量数据的表应该按照数据规模进行拆解,表的数据将拆解成多个数据分区独立存储,通常的设计原
则是:
主键(Primary Key)
单实例数据库不要求表一定要有主键,但是对于分布式数据库,主键则是必须的,以保证一行数据是全局唯一
的,避免迁移过程出现问题。如果用户没有特殊的性能需求或业务耦合问题,则应将主键设计为无意义的整数
值或者自增的;
分区键(Partition Key)
用户的分区表必须按照一种维度进行数据划分,用户在按照分区键维度进行查询时,就能做到线性性能增长
,分区键通常有如下选择方法:
1) 按业务ID切分,如用户ID、商品ID等,适合每个业务ID的数据较均匀且查询简单的场景;
2) 按多个业务维度切分,用户建立多张表存入相同数据,但是每张表按照不同业务维度切分,查询时根据过滤
条件选择不同的表,以提升访问性能,适合查询复杂且单一切分方式不能满足需求的场景;
3) 按自增主键切分,若表分区方式为分区表,主键为自增,且该字段同时为分区键,则此时写入为随机分区
,按照非主键查询时需要读取所有分区,适合有数据偏斜且写多读少的场景;
4) 至少保证在分区键上有一个索引;
业务列
其它的列统归为此类,仅用于存储数据,通常要考虑:1) 列不宜过长,够用即可,临时加载的长列会消耗额外
内存,影响查询性能;2) 准确定义列的类型,避免查询时使用的类型与表定义的类型不匹配,从而进行类型转
换,以致不能正确使用索引;3) 优先使用timestamp类型代替其它时间日期类型,且使用时严格遵守mysql的
时间日期格式;
主键索引
若主键是自增类型,则主键索引不会对整体性能优化有改善,若主键与业务相关,则可以对最频繁使用的
SQL语句的查询条件建立主键索引,这样可以提升性能;
1
HybridDB for MySQL 最佳实践
辅助索引
其他情况下,如果不能通过将SQL语句拆解成单分区的,且不能利用主键进行索引优化时,需要对全部分区进
行扫描,此时可以对这部分全分区扫描的语句的查询条件建立索引,使得在每个分区上进行访问时,仍然能取
得较高的性能
*注:HybridDB for MySQL 目前暂不支持广播表(广播表的数据在每个数据分区均有相同副本,用于与分区
表进行join)
常用优化包括
1) 合理的选择拆分字段。选择拆分字段时需要综合考虑查询性能、分布式事务、热点、数据迁移等多个因素;
文档评论(0)