BATCH文の誤った使用

BATCH文の誤った使用法。

BATCH文を誤って使用すると、DataStax Enterpriseで多くの問題が生じる場合があります。複数のノードが関与するバッチ操作は明らかにアンチパターンです。INSERT文とUPDATE文をBATCH文に含めると、どのパーティションのデータが書き込まれるかに注意してください。複数のパーティションに書き込むにはクラスターの複数のノードとの相互作用が必要となり、書き込み操作でかなりのレイテンシーが発生する場合があります。

手順

この例は、パーティション・キーがidの場合、BATCH文が複数の異なるパーティションに書き込まれることによるアンチパターンを示しています。
BEGIN BATCH

  INSERT INTO cycling.cyclist_name (
    id, lastname, firstname
  ) VALUES (
    6d5f1663-89c0-45fc-8cfd-60a373b01622,'HOSKINS', 'Melissa'
  );

  INSERT INTO cycling.cyclist_name (
    id, lastname, firstname
  ) VALUES (
    38ab64b6-26cc-4de9-ab28-c257cf011659,'FERNANDES', 'Marcia'
  );

  INSERT INTO cycling.cyclist_name (
    id, lastname, firstname
  ) VALUES (
    9011d3be-d35c-4a8d-83f7-a3c543789ee7,'NIEWIADOMA', 'Katarzyna'
  );

  INSERT INTO cycling.cyclist_name (
    id, lastname, firstname
  ) VALUES (
    95addc4c-459e-4ed7-b4b5-472f19a67995,'ADRIAN', 'Vera'
  );

APPLY BATCH;
この例では、4つのパーティションがアクセスされますが、1つのバッチに100のパーティションが含まれている場合の影響を考えてみると、パフォーマンスは大幅に低下します。