我是分手新手,想知道分片对各种查询有什么影响。对于命名为“人”的样本数据集:分片的性能影响是什么?
person_id | person_fname | person_lname | person_dob
----------------------------------------------------
1 | John | Smith | 1972-03-04
2 | Sally | Jones | 1968-09-14
3 | Phil | Forrester | 1976-11-25
4 | Gwen | Langley | 1955-04-20
5 | Pedro | Romero | 1962-12-21
6 | Gene | Halford | 1978-01-11
7 | Juan | Peza | 1977-08-07
8 | Pierre | Henry | 1980-04-30
的数据是分片同样在四个节点通过创建代理身份“ID”的哈希值。但是,你需要对潜在的跨越所有的节点,如记录执行读写操作:
SELECT person_fname,
person_lname
FROM people
WHERE person_dob > '1970-01-01'
或者说你有“订单”的另一种表,它引用“人”对“为person_id”列,并希望执行加入...
SELECT order_id,
order_amount,
order_date,
person_fname,
person_lname
FROM orders
LEFT JOIN people
WHERE order_amount > 50
实际上,所有节点都会并行运行查询吗?我假设每个服务器对每个步骤所做的工作较少,而不是一个实例在八条记录上运行查询,同时,四个实例将通过两条(ish)记录运行查询,而且如果DBMS能够执行碎片选择,然后其他节点不需要继续执行任何进一步的指令,这个假设是否正确?
是否有任何已知的性能影响与分片和复杂的联接(除了这个简单的例子)?
谢谢,这是有道理的 –
可悲的是,上述属于“容易说什么”的类别。 –