如果一张表数据很大,将分表拆分数据,或者预估数据量很大,会预先生成很多分表,那么,日后要改字段,岂不是每张表都是执行同样的 sql 改字段?
MySQL 还有分区的概念,就是解决一张表数据量过大的,为什么现实开发中还是普遍使用分表的方式?
PHP中文网2017-04-17 16:28:13
데이터베이스든 다양한 프로그래밍 모델이든 0커플링이 최고라는 뜻은 아니라고 생각합니다. 적절한 중복성은 성능, 가독성 및 유지 관리성을 향상시킬 수 있습니다.
ringa_lee2017-04-17 16:28:13
제 생각에는 파티셔닝을 위해서는 테이블을 나누는 규칙을 지정해야 하는데 이는 상대적으로 엄격한 것입니다. 테이블 샤딩은 비즈니스 로직 계층에서 핫 데이터를 유연하게 샤딩할 수 있습니다.
黄舟2017-04-17 16:28:13
테이블의 용량은 여전히 제한입니다. 데이터가 많을수록 삽입할 때마다 해당 파티션을 찾아 삽입 성능에 영향을 미치게 됩니다. 이는 삽입 속도를 크게 감소할 것입니다.
테이블 분할의 단점은 물론 필드 수정이 필요하면 모든 테이블에서 해야 한다고 말씀하셨는데, 그럴 가능성은 적고 이전 데이터에는 데이터가 되고 모든 데이터를 테이블에 넣으면 테이블 구조를 변경하면 테이블이 잠기지 않습니까? 이러한 측면에서 하위 테이블 역시 읽기와 쓰기의 분리를 이룰 수 있습니다. 또 다른 단점은 쿼리에 union table이 필요하고, sql을 splice하려면 while을 사용해야 하는데, 이는 다소 번거롭고 파티션을 splice할 필요가 없다는 점이다. . .
따라서 실제로는 하위 테이블과 파티션이 결합되어 서로를 보완하는 경우가 많습니다.