ELEMENTIDCOMPUTE
ELEMENTIDCOMPUTE関数は、TimesTen Scaleoutのみでサポートされています。この関数は、分散キーが属している要素のIDを戻します。
SQL構文
ELEMENTIDCOMPUTE (Expression [,...])
パラメータ
ELEMENTIDCOMPUTEには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
1つ以上の式。 |
説明
-
ELEMENTIDCOMPUTESQL関数では、1つ以上の式を使用できます。この式のリストは、ハッシュ分散キーを表します。この関数によって戻される要素IDは、トランザクション内では固定されています。TimesTen Scaleoutのトポロジが変更されると、行が別の要素にマップされることで、特定の行の要素のIDが変化する場合があります。 -
この関数を使用すると、特定の分散キーが挿入される要素を予測できます。
-
ELEMENTIDCOMPUTEは、TT_INTEGERデータ型を戻します。
ノート:
K-safetyを2に設定した場合、ELEMENTIDCOMPUTEはレプリカ・セットのいずれかの要素のIDを戻します。戻される値は、データ行がローカル要素IDにマップされる場合でも、接続している要素IDでないことがあります。
例
これらの例では、ELEMENTIDCOMPUTE関数の使用方法を示します。
この例(最初の例)では、cust_id分散キーが属するレプリカ・セット内の1つの要素の要素IDを戻すために、ELEMENTIDCOMPUTE関数を呼び出します。また、この問合せによって、cust_idが910から920のcustomers表からcust_id、last_nameおよびfirst_name列も戻されます。
Command> SELECT ELEMENTIDCOMPUTE (cust_id), cust_id,last_name,first_name
FROM customers WHERE cust_id BETWEEN 910 AND 920
ORDER BY cust_id, last_name, first_name;
< 3, 910, Riley, Tessa >
< 1, 911, Riley, Rashad >
< 1, 912, Riley, Emma >
< 1, 913, Rivera, Erin >
< 1, 914, Roberts, Ava >
< 1, 915, Roberts, Lee >
< 3, 916, Roberts, Clint >
< 5, 917, Robertson, Faith >
< 3, 918, Robinson, Miguel >
< 3, 919, Robinson, Mozell >
< 5, 920, Rodgers, Darryl >
11 rows found.
この例(2番目の例)では、要素1と要素2は、同じレプリカ・セットに含まれています。この例は、要素1への接続とレプリカ(要素2)への2番目の接続を示しています。要素2に接続した場合、ELEMENTIDCOMPUTEから戻される値は、データ行が要素2にマップされる場合でも要素2ではありません。この例は、戻される値がアプリケーションの接続先の要素IDでない可能性があることを示しています。
Command> SELECT elementId# FROM dual; < 1 > 1 row found. Command> SELECT FIRST 5 ELEMENTIDCOMPUTE (cust_id), elementid# FROM customers; < 1, 1 > < 1, 1 > < 1, 1 > < 1, 1 > < 1, 1 > 5 rows found. Command> SELECT elementId# FROM dual; < 2 > 1 row found. Command> SELECT FIRST 5 ELEMENTIDCOMPUTE (cust_id), elementid# FROM customers; < 1, 2 > < 1, 2 > < 1, 2 > < 1, 2 > < 1, 2 > 5 rows found.
この例(3番目の例)は、ELEMENTIDCOMPUTE関数を使用して、データの特定の行が挿入される要素を予測する方法を示しています。customers表に、1から1000のcust_id値があります。cust_id 1003、2000または2400が挿入される要素を予測します。たとえば、1003のcust_id値は、customers表に挿入された場合、要素5を含むレプリカ・セットに格納されると予測されます。
Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers; Type '?' for help on entering parameter values. Type '*' to end prompting and abort the command. Type '-' to leave the parameter unbound. Type '/;' to leave the remaining parameters unbound and execute the command. Enter Parameter 1 '_QMARK_1' (NUMBER) > 1003 < 5 > 1 row found.
2000のcust_id値は、customers表に挿入された場合、要素3を含むレプリカ・セットに格納されると予測されます。
Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers; Type '?' for help on entering parameter values. Type '*' to end prompting and abort the command. Type '-' to leave the parameter unbound. Type '/;' to leave the remaining parameters unbound and execute the command. Enter Parameter 1 '_QMARK_1' (NUMBER) > 2000 < 3 > 1 row found.
2400のcust_id値は、customers表に挿入された場合、要素1を含むレプリカ・セットに格納されると予測されます。
Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers; Type '?' for help on entering parameter values. Type '*' to end prompting and abort the command. Type '-' to leave the parameter unbound. Type '/;' to leave the remaining parameters unbound and execute the command. Enter Parameter 1 '_QMARK_1' (NUMBER) > 2400 < 1 > 1 row found.