Teradata - อธิบาย
คำสั่ง EXPLAIN ส่งคืนแผนการดำเนินการของเอ็นจินการแยกวิเคราะห์เป็นภาษาอังกฤษ สามารถใช้กับคำสั่ง SQL ใดก็ได้ยกเว้นคำสั่ง EXPLAIN อื่น เมื่อข้อความค้นหาขึ้นหน้าด้วยคำสั่ง EXPLAIN แผนการดำเนินการของ Parsing Engine จะถูกส่งกลับไปยังผู้ใช้แทน AMP
ตัวอย่างของ EXPLAIN
พิจารณาตารางพนักงานด้วยคำจำกัดความต่อไปนี้
CREATE SET TABLE EMPLOYEE,FALLBACK (
EmployeeNo INTEGER,
FirstName VARCHAR(30),
LastName VARCHAR(30),
DOB DATE FORMAT 'YYYY-MM-DD',
JoinedDate DATE FORMAT 'YYYY-MM-DD',
DepartmentNo BYTEINT
)
UNIQUE PRIMARY INDEX ( EmployeeNo );
ตัวอย่างบางส่วนของแผน EXPLAIN มีให้ด้านล่าง
การสแกนแบบเต็มตาราง (FTS)
เมื่อไม่มีการระบุเงื่อนไขใด ๆ ในคำสั่ง SELECT เครื่องมือเพิ่มประสิทธิภาพอาจเลือกใช้ Full Table Scan โดยที่แต่ละแถวและทุกแถวของตารางสามารถเข้าถึงได้
ตัวอย่าง
ต่อไปนี้เป็นแบบสอบถามตัวอย่างที่เครื่องมือเพิ่มประสิทธิภาพอาจเลือก FTS
EXPLAIN SELECT * FROM employee;
เมื่อดำเนินการค้นหาข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ ดังจะเห็นได้ว่าเครื่องมือเพิ่มประสิทธิภาพเลือกที่จะเข้าถึง AMP ทั้งหมดและทุกแถวภายใน AMP
1) First, we lock a distinct TDUSER."pseudo table" for read on a
RowHash to prevent global deadlock for TDUSER.employee.
2) Next, we lock TDUSER.employee for read.
3) We do an all-AMPs RETRIEVE step from TDUSER.employee by way of an
all-rows scan with no residual conditions into Spool 1
(group_amps), which is built locally on the AMPs. The size of
Spool 1 is estimated with low confidence to be 2 rows (116 bytes).
The estimated time for this step is 0.03 seconds.
4) Finally, we send out an END TRANSACTION step to all AMPs involved
in processing the request.
→ The contents of Spool 1 are sent back to the user as the result of
statement 1. The total estimated time is 0.03 seconds.
ดัชนีหลักที่ไม่ซ้ำกัน
เมื่อเข้าถึงแถวโดยใช้ดัชนีหลักที่ไม่ซ้ำกันจะเป็นการดำเนินการ AMP อย่างหนึ่ง
EXPLAIN SELECT * FROM employee WHERE EmployeeNo = 101;
เมื่อดำเนินการค้นหาข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ ดังที่เห็นได้ว่าเป็นการดึง AMP เพียงครั้งเดียวและเครื่องมือเพิ่มประสิทธิภาพกำลังใช้ดัชนีหลักที่ไม่ซ้ำกันเพื่อเข้าถึงแถว
1) First, we do a single-AMP RETRIEVE step from TDUSER.employee by
way of the unique primary index "TDUSER.employee.EmployeeNo = 101"
with no residual conditions. The estimated time for this step is
0.01 seconds.
→ The row is sent directly back to the user as the result of
statement 1. The total estimated time is 0.01 seconds.
ดัชนีรองที่ไม่ซ้ำกัน
เมื่อเข้าถึงแถวโดยใช้ Unique Secondary Index จะเป็นการดำเนินการสองแอมป์
ตัวอย่าง
พิจารณาตารางเงินเดือนด้วยคำจำกัดความต่อไปนี้
CREATE SET TABLE SALARY,FALLBACK (
EmployeeNo INTEGER,
Gross INTEGER,
Deduction INTEGER,
NetPay INTEGER
)
PRIMARY INDEX ( EmployeeNo )
UNIQUE INDEX (EmployeeNo);
พิจารณาคำสั่ง SELECT ต่อไปนี้
EXPLAIN SELECT * FROM Salary WHERE EmployeeNo = 101;
เมื่อดำเนินการค้นหาข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ ดังที่เห็นได้ว่าเครื่องมือเพิ่มประสิทธิภาพจะดึงแถวในการดำเนินการสองแอมป์โดยใช้ดัชนีรองที่ไม่ซ้ำกัน
1) First, we do a two-AMP RETRIEVE step from TDUSER.Salary
by way of unique index # 4 "TDUSER.Salary.EmployeeNo =
101" with no residual conditions. The estimated time for this
step is 0.01 seconds.
→ The row is sent directly back to the user as the result of
statement 1. The total estimated time is 0.01 seconds.
ข้อกำหนดเพิ่มเติม
ต่อไปนี้เป็นรายการคำศัพท์ที่พบเห็นได้ทั่วไปในแผน EXPLAIN
... (Last Use) …
ไม่จำเป็นต้องใช้ไฟล์เก็บพักอีกต่อไปและจะถูกปล่อยออกมาเมื่อขั้นตอนนี้เสร็จสิ้น
... with no residual conditions …
เงื่อนไขที่เกี่ยวข้องทั้งหมดถูกนำไปใช้กับแถวแล้ว
... END TRANSACTION …
ล็อกธุรกรรมจะถูกปลดล็อกและมีการเปลี่ยนแปลง
... eliminating duplicate rows ...
แถวที่ซ้ำกันมีอยู่ในไฟล์สปูลเท่านั้นไม่ได้ตั้งค่าตาราง การดำเนินการ DISTINCT
... by way of a traversal of index #n extracting row ids only …
ไฟล์สปูลถูกสร้างขึ้นโดยมีรหัสแถวที่พบในดัชนีรอง (ดัชนี #n)
... we do a SMS (set manipulation step) …
การรวมแถวโดยใช้ตัวดำเนินการ UNION, MINUS หรือ INTERSECT
... which is redistributed by hash code to all AMPs.
แจกจ่ายข้อมูลเพื่อเตรียมเข้าร่วม
... which is duplicated on all AMPs.
การทำสำเนาข้อมูลจากตารางขนาดเล็ก (ในแง่ของ SPOOL) เพื่อเตรียมการเข้าร่วม
... (one_AMP) or (group_AMPs)
ระบุว่าจะใช้ AMP 1 รายการหรือ AMP ชุดย่อยแทน AMP ทั้งหมด