记录一次MySQL两万万数据的大表优化办理进程,提供三种办理方案
对用户来说,分区表是一个独立的逻辑表,可是底层由多个物理子表构成,实现分区的代码现实上是通过对一组底层表的工具封装,但对SQL层来说是一个完全封装底层的黑盒子。MySQL实现分区的方法也意味着索引也是凭证分区的子表界说,没有全局索引 用户的SQL语句是必要针对分区表做优化,SQL前提中要带上分区前提的列,从而使查询定位到少量的分区上,不然就会扫描所有门区,可以通过EXPLAIN PARTITIONS来查察某条SQL语句会落在那些分区上,从而举办SQL优化,我测试,查询时不带分区前提的列,也会进步速率,故该法子值得一试。 分区的甜头是:
分区的限定和弱点:
分区的范例:
我起首按照月份把上网记录表RANGE分区了12份,查询服从进步6倍阁下,结果不明明,故:换id为HASH分区,分了64个分区,查询速率晋升明显。题目办理! 功效如下:
4、分表分表就是把一张大表,凭证如上进程都优化了,照旧查询卡死,那就把这个表分成多张表,把一次查询分成多次查询,然后把功效组合返回给用户。 分表分为垂直拆分和程度拆分,凡是以某个字段做拆分项。好比以id字段拆分为100张表: 表名为 tableName_id%100 但:分表必要修改源措施代码,会给开拓带来大量事变,极大的增进了开拓本钱,故:只得当在开拓初期就思量到了大量数据存在,做好了分表处理赏罚,不得当应用上线了再做修改,本钱太高!!!并且选择这个方案,都不如选择我提供的第二第三个方案的本钱低!故不提议回收。 5、分库把一个数据库分成多个,提议做个读写疏散就行了,真正的做分库也会带来大量的开拓本钱,得不偿失!不保举行使。 方案二具体声名:进级数据库,换一个100%兼容mysql的数据库mysql机能不可,那就换个。为担保源措施代码不修改,担保现有营业安稳迁徙,故必要换一个100%兼容mysql的数据库。 开源选择
云数据选择
官方先容语:POLARDB 是阿里云自研的下一代相关型漫衍式云原生数据库,,100%兼容MySQL,存储容量最高可达 100T,机能最高晋升至 MySQL 的 6 倍。POLARDB 既融合了贸易数据库不变、靠得住、高机能的特性,又具有开源数据库简朴、可扩展、一连迭代的上风,而本钱只需商用数据库的 1/10。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |