Teradata - คำถามและคำตอบ
เรียนผู้อ่านเหล่านี้ Teradata Interview Questions ได้รับการออกแบบมาเป็นพิเศษเพื่อให้คุณคุ้นเคยกับลักษณะของคำถามที่คุณอาจพบในระหว่างการสัมภาษณ์ในหัวข้อนั้น ๆ Teradata. จากประสบการณ์ของฉันผู้สัมภาษณ์ที่ดีแทบจะไม่ได้วางแผนที่จะถามคำถามใด ๆ โดยเฉพาะในระหว่างการสัมภาษณ์ของคุณโดยปกติแล้วคำถามจะเริ่มต้นด้วยแนวคิดพื้นฐานบางอย่างของเรื่องและหลังจากนั้นพวกเขาจะดำเนินการต่อโดยพิจารณาจากการสนทนาเพิ่มเติมและสิ่งที่คุณตอบ -
Teradata Architecture ประกอบด้วยสามองค์ประกอบ
Parsing Engine - Parsing Engine รับคำถามจากผู้ใช้แยกวิเคราะห์และเตรียมแผนการดำเนินการ
BYNET - BYNET ได้รับแผนการดำเนินการจาก Parsing Engine และส่งไปยัง AMP ที่เหมาะสม
AMP- AMP มีหน้าที่จัดเก็บและเรียกข้อมูลแถว จัดเก็บข้อมูลในดิสก์เสมือนที่เกี่ยวข้อง นอกจากนี้ AMP ยังรับผิดชอบการจัดการการล็อกการจัดการพื้นที่การเรียงลำดับและการรวม
FastLoad | MultiLoad |
---|---|
ตารางเป้าหมายควรว่างเปล่า | ตารางเป้าหมายต้องไม่ว่างเปล่า |
สามารถโหลดได้เพียงตารางเดียวโดยใช้สคริปต์เดียว | สามารถโหลด / อัปเดตได้สูงสุด 5 ตาราง |
รองรับเฉพาะคำสั่ง CREATE / INSERT | รองรับคำสั่ง DML สูงสุด 20 รายการในสคริปต์เดียว |
ไม่รองรับตารางที่มี RI, SI และ Triggers | รองรับตารางด้วย NUSI |
FastLoad ให้ความสามารถในการรีสตาร์ทผ่านจุดตรวจ เมื่อสคริปต์เริ่มต้นใหม่จากจุดตรวจสุดท้ายอาจเป็นไปได้ว่าแถวเดิมอาจถูกส่งไปยัง AMP อีกครั้ง นั่นเป็นเหตุผลที่ FastLoad ไม่รองรับรายการที่ซ้ำกัน
ตาราง SET ไม่อนุญาตให้มีระเบียนที่ซ้ำกันในขณะที่ MULTISET อนุญาตให้มีระเบียนที่ซ้ำกัน
สำหรับแต่ละแถวที่แทรกระบบจะตรวจสอบว่ามีระเบียนใดที่มีแฮชแถวเดียวกันหรือไม่ หากตารางมีการกำหนด UPI ตารางนั้นจะปฏิเสธการบันทึกว่าซ้ำกัน มิฉะนั้นจะเปรียบเทียบระเบียนทั้งหมดว่าซ้ำกัน สิ่งนี้จะส่งผลกระทบอย่างรุนแรงต่อประสิทธิภาพของระบบ
คุณสามารถกำหนดดัชนีหลักที่ไม่ซ้ำกันหรือดัชนีรองที่ไม่ซ้ำกันเพื่อหลีกเลี่ยงการตรวจสอบแถวที่ซ้ำกัน
ตารางถูกสร้างขึ้นโดยใช้คำสั่ง CREATE TABLE สามารถสร้างตารางโดยใช้ไฟล์
สร้างคำสั่ง TABLE ด้วยนิยามคอลัมน์
สร้างตารางจากตารางที่มีอยู่
สร้างคำสั่ง TABLE ด้วยคำสั่ง SELECT
สามารถระบุระเบียนที่ซ้ำกันได้โดยใช้คำสั่ง DISTINCT หรือคำสั่ง GROUP BY
SELECT DISTINCT column 1, column 2…
FROM tablename;
OR
SELECT column 1, column 2,…
FROM tablename
GROUP BY column 1, column 2….;
คีย์หลักไม่บังคับใน Teradata ในขณะที่ดัชนีหลักเป็นสิ่งที่บังคับ
การกระจายข้อมูลขึ้นอยู่กับค่าดัชนีหลัก
คีย์หลักไม่ยอมรับ NULL ในขณะที่ดัชนีหลักยอมรับค่า NULL
คีย์หลักไม่ซ้ำกันในขณะที่ดัชนีหลักสามารถเป็นได้ทั้งแบบไม่ซ้ำกัน (UPI) หรือไม่ซ้ำกัน (NUPI)
คีย์หลักจะไม่เปลี่ยนแปลงในขณะที่ดัชนีหลักเปลี่ยนไป
ข้อมูลสามารถเข้าถึงได้ 3 วิธี -
- ผ่านดัชนีหลัก
- ผ่านดัชนีทุติยภูมิ
- การสแกนแบบเต็มตาราง
สามารถระบุได้โดยใช้แบบสอบถาม SELECT HASHAMP () + 1;
สามารถใช้แบบสอบถามต่อไปนี้เพื่อจุดประสงค์นี้
SELECT HASHMAP(HASHBUCKET(HASHROW(primaryindexvalue))), COUNT(*)
FROM tablename GROUP BY 1;
Teradata รองรับโหมดการทำธุรกรรมสองโหมด
- Teradata
- ANSI
โหมด Teradata ถูกตั้งค่าโดยใช้ SET SESSION TRANSACTION BTET; โหมด ANSI ถูกตั้งค่าโดยใช้ SET SESSION TRANSACTION ANSI;
ธุรกรรมสามารถดำเนินการได้โดยใช้คำสั่ง BT และ ET
ผู้ใช้ไม่สามารถเข้าร่วมดัชนีได้โดยตรง มีเพียงเครื่องมือเพิ่มประสิทธิภาพเท่านั้นที่สามารถเข้าถึงได้
ระเบียนที่ซ้ำกันจะถูกปฏิเสธจากการโหลดตารางเป้าหมายและจะถูกแทรกลงในตาราง UV
FALLBACK เป็นกลไกการป้องกันที่ Teradata ใช้เพื่อจัดการความล้มเหลวของ AMP สำหรับแถวข้อมูลแต่ละแถวสำเนาของแถวอื่นจะถูกเก็บไว้ใน AMP ที่แตกต่างกันภายในคลัสเตอร์ หาก AMP ล้มเหลวระบบจะเข้าถึงแถวที่เกี่ยวข้องโดยใช้ FALLBACK AMP
FALLBACK สามารถกล่าวถึงในขณะที่สร้างตารางโดยใช้คำสั่ง CREATE TABLE หรือหลังจากสร้างตารางโดยใช้คำสั่ง ALTER TABLE
ข้อผิดพลาดของ Spool space จะเกิดขึ้นหากผลลัพธ์ระดับกลางของข้อความค้นหาเกินขีด จำกัด พื้นที่ spool ของ AMP ที่กำหนดไว้สำหรับผู้ใช้ที่ส่งคำค้นหา
คำสั่ง SLEEP ระบุเวลารอก่อนที่ Teradata จะพยายามสร้างการเชื่อมต่อ
คำสั่ง TENACITY ระบุเวลารอทั้งหมดสำหรับ Teradata เพื่อสร้างการเชื่อมต่อใหม่
คุณสามารถเก็บคำสั่ง BEGIN LOADING และ END LOADING ไว้และส่งสคริปต์ FASTLOAD ตัวเลือกอื่นคือวางตารางและสร้างตารางอีกครั้ง
การแคชใน Teradata ทำงานกับแหล่งที่มาและยังคงอยู่ในลำดับเดิมนั่นคือจะไม่เปลี่ยนแปลงบ่อย โดยปกติแคชจะใช้ร่วมกันระหว่างแอปพลิเคชัน เป็นข้อดีเพิ่มเติมของการใช้ Teradata
RAID เป็นกลไกการป้องกันเพื่อจัดการกับความล้มเหลวของดิสก์ ย่อมาจาก Redundant Array of Independent Disks RAID 1 มักใช้ใน Teradata
ดัชนีรองจัดเตรียมเส้นทางอื่นในการเข้าถึงข้อมูล ใช้เพื่อหลีกเลี่ยงการสแกนแบบเต็มตาราง อย่างไรก็ตามดัชนีทุติยภูมิจำเป็นต้องมีโครงสร้างทางกายภาพเพิ่มเติมสำหรับการดูแลตารางย่อยและยังต้องการ I / O เพิ่มเติมเนื่องจากตารางย่อยต้องได้รับการอัพเดตสำหรับแต่ละแถว
Teradata มีสี่ล็อคที่แตกต่างกัน ได้แก่ Exclusive เขียนอ่านและเข้าถึง
สามารถใช้การล็อกได้ในสามระดับที่แตกต่างกัน - ฐานข้อมูลตารางและแถว
การใช้การบีบอัดแบบหลายค่า (MVC) คุณสามารถบีบอัดค่าได้มากถึง 255 ค่ารวมทั้งค่า NULL
FastLoad โหลดข้อมูลในบล็อก 64K FastLoad มี 2 เฟส
ในระยะที่ 1 จะนำข้อมูลในบล็อก 64K และส่งไปยัง AMP เป้าหมาย AMP แต่ละตัวจะแฮชกระจายแถวไปยัง AMP เป้าหมายอีกครั้ง
ในระยะที่ 2 แถวจะเรียงลำดับตามลำดับแฮชของแถวและเขียนลงในตารางเป้าหมาย
การนำเข้า MultiLoad มีห้าขั้นตอน
Phase 1 - ขั้นตอนเบื้องต้น - ดำเนินกิจกรรมการตั้งค่าพื้นฐาน
Phase 2 - DML Transaction Phase - ตรวจสอบไวยากรณ์ของคำสั่ง DML และนำไปยังระบบ Teradata
Phase 3 - Acquisition Phase - นำข้อมูลเข้ามาในตารางงานและล็อกตาราง
Phase 4 - Application Phase - ใช้การดำเนินการ DML ทั้งหมด
Phase 5 - Cleanup Phase - ปลดล็อคตาราง
MULTILOAD DELETE เร็วกว่าเนื่องจากจะลบบันทึกในบล็อก DELETE FROM จะลบทีละแถว
ขั้นตอนที่จัดเก็บจะส่งคืนค่าอย่างน้อยหนึ่งค่าในขณะที่มาโครสามารถส่งคืนหนึ่งแถวหรือมากกว่า นอกจาก SQL แล้วกระบวนงานที่เก็บไว้อาจมีคำสั่ง SPL
ทั้ง FastLoad และ MultiLoad โหลดข้อมูลในบล็อก 64K ในขณะที่ BTEQ จะประมวลผลทีละแถว
FastExport ส่งออกข้อมูลใน 64K บล็อกในขณะที่ BTEQ ส่งออกทีละแถว
Teradata Parallel Transporter (TPT) เป็นยูทิลิตี้สำหรับโหลด / ส่งออกข้อมูล มันรวมฟังก์ชันทั้งหมดของ FastLoad, MultiLoad, BTEQ, TPUMP และ FastExport
วารสารถาวรจะติดตามข้อมูลก่อนหรือหลังใช้การเปลี่ยนแปลง วิธีนี้ช่วยในการย้อนกลับหรือเลื่อนตารางไปข้างหน้าในสถานะเฉพาะ วารสารถาวรสามารถเปิดใช้งานได้ที่ระดับตารางหรือระดับฐานข้อมูล
ใน Teradata AMP แต่ละรายการจะเชื่อมโยงกับดิสก์เสมือน มีเพียง AMP ที่เป็นเจ้าของดิสก์เสมือนเท่านั้นที่สามารถเข้าถึงข้อมูลภายในดิสก์เสมือนนั้นได้ สิ่งนี้เรียกว่าเป็น Shared Nothing Architecture
หากแบบสอบถามใช้คอลัมน์ที่แบ่งพาร์ติชันจะส่งผลให้มีการลบพาร์ติชันซึ่งจะช่วยเพิ่มประสิทธิภาพได้มาก
พาร์ติชันกำจัดพาร์ติชันอื่นและเข้าถึงเฉพาะพาร์ติชันที่มีข้อมูล
คุณสามารถวางพาร์ติชันเก่าและสร้างพาร์ติชันใหม่ได้อย่างง่ายดาย
ใช่. ดัชนีรองต้องการตารางย่อยซึ่งต้องการพื้นที่ถาวร
ใช่. เมื่อใดก็ตามที่มีการเพิ่มดัชนีหลักที่แบ่งพาร์ติชันแต่ละแถวจะใช้พื้นที่เพิ่มเติม 2 หรือ 8 ไบต์สำหรับหมายเลขพาร์ติชัน
คุณสามารถใช้ฟังก์ชัน RANK บนคอลัมน์ที่ระบุโดยเรียงลำดับจากมากไปหาน้อยโดยมีเงื่อนไข Qualify = 2
คุณสามารถตรวจสอบแผน EXPLAIN ของแบบสอบถามเพื่อระบุขั้นตอนที่ใช้พื้นที่สปูลมากขึ้นและพยายามปรับการสืบค้นให้เหมาะสม สามารถใช้ตัวกรองเพื่อลดจำนวนบันทึกที่ประมวลผลหรือคุณสามารถแบ่งแบบสอบถามขนาดใหญ่ออกเป็นแบบสอบถามขนาดเล็กหลายรายการ
เมื่อใช้คำสั่ง EXPLAIN กับคิวรีคำสั่งจะระบุความเชื่อมั่นของเครื่องมือเพิ่มประสิทธิภาพในการดึงข้อมูลเรกคอร์ด
Teradata มีสามระดับความมั่นใจ: ความมั่นใจสูงความมั่นใจปานกลางและความมั่นใจต่ำ
ทั้ง NUSI และ Full Table Scan (FTS) จะเข้าถึง AMP ทั้งหมด แต่ FTS จะเข้าถึงบล็อกทั้งหมดภายใน AMP ในขณะที่ NUSI จะเข้าถึงบล็อกก็ต่อเมื่อตารางย่อยมีแถวที่เข้าเกณฑ์
ในโหมด BTEQ สามารถใช้คำสั่ง SKIP เพื่อข้ามบันทึกได้
BYTEINT. ใช้พื้นที่เพียงหนึ่งไบต์และสามารถจัดเก็บค่าได้ถึง +127
- ผ่านดัชนีหลักที่ไม่ซ้ำ - 1 AMP
- ผ่านดัชนีหลักที่ไม่ซ้ำ - 1 AMP
- ผ่านดัชนีรองที่ไม่ซ้ำกัน - 2 AMP
- ผ่านดัชนีรองที่ไม่ซ้ำกัน - AMP ทั้งหมด
Clique เป็นกลไกการป้องกันเพื่อจัดการกับความล้มเหลวของโหนด มันเป็นกลุ่มของโหนด เมื่อโหนดภายในกลุ่มล้มเหลว vprocs (Parsing Engine และ AMP) จะย้ายไปยังโหนดอื่นและดำเนินการอ่าน / เขียนบนดิสก์เสมือนต่อไป
Teradata มีกลไกการป้องกันในระดับที่แตกต่างกัน
Transient Journal - เพื่อจัดการความล้มเหลวของธุรกรรม
Fallback - เพื่อจัดการความล้มเหลวของ AMP
Cliques - เพื่อจัดการกับความล้มเหลวของโหนด
RAID - เพื่อจัดการกับความล้มเหลวของดิสก์
Hot standby Node - เพื่อจัดการกับความล้มเหลวของโหนดโดยไม่ส่งผลต่อประสิทธิภาพและเริ่มต้นใหม่
ACTIVITYCOUNT แสดงจำนวนแถวที่ได้รับผลกระทบจากแบบสอบถาม SQL ก่อนหน้าใน BTEQ ถ้าคำสั่ง ACTIVITYCOUNT เป็นไปตามคำสั่งแทรกจะส่งกลับจำนวนแถวที่แทรก ถ้าคำสั่ง ACTIVITYCOUNT เป็นไปตามคำสั่ง select จะส่งกลับจำนวนแถวที่เลือก
Next คืออะไร?
นอกจากนี้คุณยังสามารถดูงานที่ได้รับมอบหมายในอดีตของคุณที่คุณทำกับหัวเรื่องและตรวจสอบให้แน่ใจว่าคุณสามารถพูดกับพวกเขาได้อย่างมั่นใจ หากคุณเป็นคนใหม่ผู้สัมภาษณ์ไม่คาดหวังว่าคุณจะตอบคำถามที่ซับซ้อนมากนัก แต่คุณต้องทำให้แนวคิดพื้นฐานของคุณแข็งแกร่งมาก
ประการที่สองมันไม่สำคัญมากนักหากคุณไม่สามารถตอบคำถามสองสามข้อได้ แต่สิ่งสำคัญคือสิ่งที่คุณตอบคุณต้องตอบด้วยความมั่นใจ ดังนั้นเพียงแค่รู้สึกมั่นใจในระหว่างการสัมภาษณ์ของคุณ พวกเราขอให้คุณโชคดีที่มีผู้สัมภาษณ์ที่ดีและสิ่งที่ดีที่สุดสำหรับความพยายามในอนาคตของคุณ ไชโย :-)