ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

4
การทำดัชนีพื้นที่ใหญ่กว่าพื้นที่ข้อมูลนั้นเป็นสิ่งที่ไม่ดีหรือไม่?
บ่อยครั้งที่ฉันต้องการเรียกใช้แบบสอบถามกับตารางขนาดใหญ่ที่ไม่มีดัชนีที่ถูกต้อง ดังนั้นฉันขอให้ DBA สร้างดัชนีดังกล่าว สิ่งแรกที่เขาทำคือดูที่ตารางสถิติและดูขนาดพื้นที่ดัชนี บ่อยครั้งที่เขาจะบอกให้ฉันหาวิธีแก้ปัญหาทางเลือกเพราะ "ดัชนีนั้นใหญ่กว่าตาราง" เขารู้สึกว่าดัชนีต้องเล็กกว่าข้อมูลเพราะเขาบอกฉันว่า "คุณเคยเห็นดัชนีในหนังสือหรือไม่มันเล็กกว่าหนังสือมากและนั่นเป็นวิธีที่ดัชนีตารางควร" ฉันไม่รู้สึกว่าปรัชญาของเขาถูกต้อง แต่ฉันไม่สามารถท้าทายเขาได้เพราะเขาเป็นผู้นำ DBA และฉันเป็นนักพัฒนา ฉันรู้สึกว่าแบบสอบถามต้องการดัชนีควรสร้างดัชนีแทนการค้นหา "วิธีแก้ไข" ที่เพิ่งสร้าง SP ที่ไม่สามารถอ่านได้และไม่สามารถแก้ไขได้ ฉันกำลังเลือกคอลัมน์ที่ต้องการเท่านั้น ปัญหาคือฉันกำลังกรองตามวันที่ดังนั้นเครื่องมือจำเป็นต้องทำการสแกนตารางเพื่อให้ตรงกับคอลัมน์ แบบสอบถามทำงานวันละครั้งตอนกลางคืนเพื่อรวบรวมสถิติ แต่ใช้เวลา 15 นาทีในการทำงาน (เรามีกฎที่ยากและรวดเร็ว: ไม่มีขั้นตอนใดที่ควรใช้เวลามากกว่า 3 นาที) DBA แสดงสถิติดัชนีให้ฉัน มีประมาณ 10 ดัชนีในตารางนั้นมีเพียง 6 ดัชนีเท่านั้นที่ใช้ (สถิติแสดงให้เห็นว่ามีจำนวนการเข้าศูนย์ถึง 4 ของดัชนี) นี่เป็นระบบขนาดใหญ่ที่มีผู้พัฒนามากกว่า 20 คนเข้าร่วม ดัชนีถูกสร้างขึ้นด้วยเหตุผลใดก็ตามและอาจไม่ได้ใช้อีกต่อไป เราจำเป็นต้องสนับสนุน SQL Server 2008 เนื่องจากเป็นสิ่งที่ฐานข้อมูลการทดสอบทำงานอยู่ แต่ลูกค้าทั้งหมดในปี 2014 และ …
22 sql-server  index 

2
ทริกเกอร์รวบรวมในแต่ละครั้งหรือไม่
เรากำลังแก้ไขปัญหาเซิร์ฟเวอร์ที่มีการใช้งาน CPU สูง หลังจากพบว่าคำค้นหาไม่ได้เป็นสาเหตุของปัญหาจริงๆเราเริ่มมองหาการรวบรวม การตรวจสอบประสิทธิภาพแสดงน้อยกว่า 50 การคอมไพล์ / วินาทีและน้อยกว่า 15 การคอมไพล์ / วินาที หลังจากใช้งานเซสชัน XE เพื่อค้นหาการรวบรวมเราจะเห็นการรวบรวมนับพันต่อวินาที ระบบนี้ใช้ทริกเกอร์เพื่อตรวจสอบการเปลี่ยนแปลง การรวบรวมส่วนใหญ่เกิดจากทริกเกอร์ ทริกเกอร์การอ้างอิง sys.dm_tran_active_transactions ความคิดแรกของเราคือการอ้างอิง DMV ในทริกเกอร์อาจทำให้คอมไพล์ในแต่ละครั้งหรืออาจเป็นเพียง DMV ที่เจาะจงนี้จะทำให้เกิดขึ้น ดังนั้นฉันจึงเริ่มทดสอบทฤษฎีนั้น มันจะรวบรวมในแต่ละครั้ง แต่ฉันไม่ได้ตรวจสอบว่ามีการทริกเกอร์รวบรวมในแต่ละครั้งจะถูกเรียกเมื่อมันไม่ได้อ้างอิง DMV และแทน hardcodes ค่า มันยังคงรวบรวมทุกครั้งที่มันถูกเรียก การปล่อยไกหยุดการรวบรวม เรากำลังใช้ sqlserver.query_pre_execution_showplan ในเซสชั่น XE เพื่อติดตามการคอมไพล์ ทำไมจึงมีความคลาดเคลื่อนระหว่างสิ่งนั้นกับตัวนับ PerfMon เป็นเรื่องปกติหรือไม่ที่คุณได้รับเหตุการณ์การคอมไพล์ทุกครั้งที่ทริกเกอร์รัน? สคริปต์ Repro: CREATE TABLE t1 (transaction_id int, Column2 …

2
ใช้ข้อความสูงสุด MAX หรือเฉพาะเจาะจงน้อยกว่านั้น
มีคนถูกตรวจสอบรหัส DDL ของการสร้างตารางและแนะนำเมื่อพวกเขาเห็นผมเห็นโดยใช้VARCHAR(256)ฟิลด์สำหรับข้อความที่ผมคาดหวังว่าจะสวยขนาดเล็กเหมือนชื่อหรือสิ่งที่ฉันควรจะเสมอเพียงแค่ใช้VARCHAR(MAX)และเชื่อมโยงทำไมต้องใช้อะไร แต่ (สูงสุด varchar ) . ฉันอ่านมัน แต่ดูเหมือนว่ามันล้าสมัยเพราะมันมุ่งเน้นไปที่ปี 2005 และดูเหมือนจะไม่ได้เสนอเหตุผลที่แท้จริงในการจัดสรรที่อาจเกิดขึ้นถึง 2 GB ต่อแถวในเขตข้อมูลข้อความทั้งหมด จากมุมมองด้านประสิทธิภาพการจัดเก็บและอื่น ๆ เราควรตัดสินใจอย่างไรว่าจะใช้งานVARCHAR(MAX)หรือใช้SQL Server รุ่นใหม่ที่มีขนาดเฉพาะเจาะจงน้อยลง (เช่น 2008, 2012, 2014)

2
ฉันจะหามาตรฐานแรกของ SQL, SQL-86 ได้ที่ไหน
คำถามนี้เป็นคำถามที่แตกต่างกัน แต่คล้ายกับคำขอนี้มองสำหรับ SQL-89 ร่างแรกของ SQL มีชื่อว่า SQL-86 มีการอ้างอิงจำนวนมาก สามารถดาวน์โหลดได้หรือไม่ Wikipedia ไม่มีหน้าสำหรับมัน ฉันสนใจมันด้วยเหตุผลทางประวัติศาสตร์ ดูเหมือนว่าจะถูกเรียกว่า ANSI X3.135-1986 CAN / CSA Z243.47-88 ISO 9075: 1987 SQL / 1 NBS FIPS 127 ข้อมูลจำเพาะถูกอ้างถึงในเอกสารตั้งแต่ช่วงเวลาที่มาจากคณะกรรมการด้านเทคนิค ANSI X3H2X3H2 ฉันรู้ว่ามี webstore.ansi.org แต่ฉันไม่พบX3.135-1986เอกสาร อย่างไรก็ตามฉันสามารถหาX3.168-1989สเป็คที่มีอยู่ภายใต้การX3.135-1992ค้นหาboth X3.168และX3.135ไม่อนุญาตให้ฉันซื้อสเป็ค 1986

1
SQL Server แคชผลลัพธ์ของฟังก์ชันหลายค่าในตารางหรือไม่?
ฟังก์ชั่นมูลค่าตารางหลายงบส่งกลับผลลัพธ์ในตัวแปรตาราง ผลลัพธ์เหล่านี้เคยถูกนำมาใช้ซ้ำหรือฟังก์ชั่นจะถูกประเมินอย่างเต็มที่ทุกครั้งที่มีการเรียกใช้หรือไม่

1
แสวงหาและคุณจะสแกน ... บนตารางที่แบ่งพาร์ติชัน
ฉันได้อ่านบทความเหล่านี้ใน PCMag โดยItzik Ben-Gan : แสวงหาและคุณจะสแกนส่วนที่ 1: เมื่อเครื่องมือเพิ่มประสิทธิภาพไม่ได้ปรับให้เหมาะสม แสวงหาและคุณจะสแกนส่วนที่สอง: คีย์จากน้อยไปมาก ขณะนี้ฉันมีปัญหา "Grouped Max" กับตารางที่แบ่งพาร์ติชันทั้งหมดของเรา เราใช้เคล็ดลับ Itzik Ben-Gan ที่ให้ไว้เพื่อรับ max (ID) แต่บางครั้งก็ไม่ได้ทำงาน: DECLARE @MaxIDPartitionTable BIGINT SELECT @MaxIDPartitionTable = ISNULL(MAX(IDPartitionedTable), 0) FROM ( SELECT * FROM ( SELECT partition_number PartitionNumber FROM sys.partitions WHERE object_id = OBJECT_ID('fct.MyTable') AND index_id = 1 ) T1 …

1
เมื่อใดควรใช้ sort_in_tempdb เมื่อสร้างดัชนีใหม่
เรากำลังถกเถียงกันว่าจะใช้ตัวเลือก SORT_IN_TEMPDB สำหรับตาราง DW ของเราหรือไม่ ความเข้าใจของฉันคือว่ามีการเขียนเพิ่มเติมเมื่อใช้ตัวเลือกนี้แม้ว่าพวกเขาจะเรียงตามลำดับมากขึ้น เรามี SAN (ซึ่งช้ามากในบางครั้ง) ดังนั้นในกรณีของเราเราต้องการ จำกัด จำนวนการเขียนให้มากที่สุด ฉันเชื่อว่า tempdb อยู่ใน LUN แยกต่างหาก (ชุดของดิสก์) เรามีพื้นที่ดิสก์มากมายในไฟล์ข้อมูลและไฟล์ tempdb ของเรา ในกรณีนี้เราจะได้ประโยชน์จากการใช้ SORT_IN_TEMPDB ไหม สิ่งหนึ่งที่ทำให้ฉันรู้สึกแย่คือความเห็นต่อคำตอบนี้ เมื่อสร้างดัชนีใหม่คุณจะต้องมีพื้นที่ว่างสองเท่าของดัชนี + 20% สำหรับการเรียงลำดับ โดยทั่วไปแล้วการสร้างดัชนีทุกครั้งในฐานข้อมูลของคุณคุณต้องการเพียง 120% ของดัชนีที่ใหญ่ที่สุดในฐานข้อมูลของคุณ หากคุณใช้ SORT_IN_TEMPDB คุณจะได้รับเพียง 20% คุณยังคงต้องการ aditional 100% ในไฟล์ข้อมูลของคุณ ยิ่งไปกว่านั้นการใช้ sort in tempdb จะเพิ่มการโหลด IO ของคุณอย่างมากเนื่องจากแทนที่จะเขียนดัชนีหนึ่งครั้งไปยัง datafile ตอนนี้คุณเขียนมันหนึ่งครั้งไปยัง tempdb …

4
จะลบตัวแบ่งบรรทัดใน SSMS ได้อย่างไร
ฉันจัดการกับ SQL ที่มีลักษณะดังนี้ create procedure as begin สังเกตเห็นช่องว่างขนาดใหญ่เช่นระหว่างและasbegin ฉันจะลบสิ่งเหล่านี้ได้อย่างไร ฉันใช้ตัวจัดรูปแบบ SQL แต่ไม่ทำงาน
22 sql-server  ssms 

2
วิธีที่ดีที่สุดในการโยกย้ายฐานข้อมูล SQL Server ขนาดใหญ่ที่มีการหยุดทำงานต่ำผ่านเครือข่าย
นิยามปัญหา เซิร์ฟเวอร์ฐานข้อมูลของเราต้องถูกถ่ายโอนไปยังดาต้าเซ็นเตอร์อื่น มันรันบน Microsoft SQL Server 2012 Enterprise (64 บิต) และมีฐานข้อมูลสองแห่งประมาณ 2TB และ 1TB การหยุดทำงานเพียงเล็กน้อยหรือไม่มีเลยก็เหมาะ จำนวนงาน ฐานข้อมูลเหล่านั้นใช้สำหรับเว็บไซต์. NET และมีการอัพเดทอยู่ตลอดเวลา แม้ว่าจะไม่สามารถใช้ได้ในช่วงสุดสัปดาห์ก็จะเป็นที่ยอมรับ ฐานข้อมูลที่ใช้อยู่ในปัจจุบันจะยังคงเป็นฐานข้อมูลเดียวที่ใช้งานอยู่จนกว่าสวิตช์จะเปลี่ยนเป็นสวิตช์ใหม่ สวิตช์นั้นจะสามารถทำได้โดยเพียงแค่เปลี่ยนรายการ DNS ให้ชี้ไปที่เซิร์ฟเวอร์ฐานข้อมูลใหม่ในขณะที่ตรวจสอบให้แน่ใจว่าไม่ได้มีการปรับปรุงฐานข้อมูล นอกจากนี้เวลาที่ใช้ในการดำเนินการนี้ไม่สำคัญตราบใดที่สวิตช์จากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่น (หยุดทำงาน) ยังคงอยู่ในระดับต่ำ แนวทางการพิจารณา สำรองและเรียกคืน สิ่งนี้ทำมาแล้วในอดีต แต่เกี่ยวข้องกับการหยุดทำงานที่สูงแม้ว่ามันจะทำผ่านเครือข่ายภายใน แต่ก็มีประสิทธิภาพมากกว่าผ่านทางอินเทอร์เน็ต บันทึกการจัดส่ง เท่าที่ฉันเข้าใจวิธีการนี้จะลดเวลาหยุดทำงานโดยกำหนดค่า master / slave และถ่ายโอนสำเนาของ master DB ที่แน่นอนไปยังทาสที่ถูกอ่านเท่านั้น ดังที่ได้กล่าวมาแล้วการเข้าถึงทาสนั้นไม่จำเป็นและเราก็ต้องการวิธีที่จะมีการจำลองฐานข้อมูลหลักโดยไม่มีข้อมูลเสียหาย ดูเหมือนว่าจะค่อนข้างมีประสิทธิภาพในแง่ของการใช้ทรัพยากรและจะไม่ส่งผลกระทบต่อประสิทธิภาพของต้นแบบมากนัก ฉันอาจผิดเกี่ยวกับวิธีการนี้ดังนั้นโปรดแก้ไขฉัน การทำมิเรอร์ฐานข้อมูล ฉันไม่ได้ตระหนักถึงวิธีการดังกล่าว แต่ดูเหมือนว่าเป็นตัวเลือกที่ถูกต้อง ไม่จำเป็นต้องมีการซิงค์แบบเรียลไทม์และประสิทธิภาพของต้นแบบค่อนข้างสำคัญดังนั้นอะซิงโครนัสจะเป็นหนทางไปถ้าเลือกวิธีนี้ ตัวเลือกอื่น? เซิร์ฟเวอร์นั้นทำงานโดยตรงบนฮาร์ดแวร์โลหะเปลือยดังนั้นโซลูชันระดับล่างจึงไม่ใช่ตัวเลือก …

6
คำสั่ง DELETE ไม่เสร็จในตาราง 30,000,000 แถว
ฉันได้รับฐานข้อมูลและต้องการทำความสะอาดและเร่งความเร็ว ฉันมีตารางที่มีแถว 30,000,000 แถวซึ่งส่วนใหญ่เป็นข้อมูลขยะที่แทรกเนื่องจากข้อผิดพลาดในนามของโปรแกรมเมอร์ของเรา ก่อนที่ฉันจะเพิ่มดัชนีใหม่ที่ได้รับการปรับปรุงให้ดีขึ้นฉันจะแปลงตารางจาก MyISAM เป็น InnoDB และฉันต้องการลบแถวจำนวนมากที่มีข้อมูลขยะ ฐานข้อมูลคือ MySQL 5.0 และฉันมีสิทธิ์เข้าถึงรูทไปยังเซิร์ฟเวอร์ ฉันใช้งานคำสั่งเหล่านี้เป็นครั้งแรกผ่านทาง Adminer จากนั้น phpMyAdmin ทั้งคู่ก็มีผลลัพธ์เหมือนกัน คำสั่งที่ฉันใช้คือ DELETE FROM `tablename` WHERE `columnname` LIKE '-%' -เป็นหลักอะไรลบในคอลัมน์นี้ที่เริ่มต้นด้วยเส้นประ มันใช้เวลาประมาณ 3-5 นาทีและเมื่อฉันดูรายการกระบวนการมันก็หายไป จากนั้นฉันก็วิ่ง SELECT * FROM `tablename` WHERE `columnname` LIKE '-%' และจะส่งคืนแถวนับล้าน ทำไมคำสั่งลบของฉันจึงไม่เสร็จ PS, ฉันรู้ว่า MySQL 5.0 ล้าสมัยแล้วอย่างไร ฉันกำลังทำงานเกี่ยวกับการย้ายฐานข้อมูลไปยัง MySQL 5.6 w …

2
เป็นไปได้หรือไม่ที่จะบังคับให้เครื่องมือเพิ่มประสิทธิภาพกำจัดตารางที่ไม่เกี่ยวข้องในมุมมองที่แบ่งพาร์ติชันนี้
ฉันกำลังทดสอบสถาปัตยกรรมที่แตกต่างกันสำหรับตารางขนาดใหญ่และข้อเสนอแนะอย่างหนึ่งที่ฉันเห็นคือใช้มุมมองที่แบ่งพาร์ติชันโดยที่ตารางขนาดใหญ่จะแบ่งออกเป็นชุดที่มีขนาดเล็กลง 1 , 2 , 3 , 4 ในการทดสอบวิธีการนี้ฉันได้ค้นพบบางสิ่งที่ไม่สมเหตุสมผลสำหรับฉัน เมื่อฉันกรอง "การแบ่งคอลัมน์" ในมุมมองข้อเท็จจริงเครื่องมือเพิ่มประสิทธิภาพจะค้นหาเฉพาะในตารางที่เกี่ยวข้องเท่านั้น นอกจากนี้หากฉันกรองคอลัมน์นั้นบนตารางมิติเครื่องมือเพิ่มประสิทธิภาพจะกำจัดตารางที่ไม่จำเป็น อย่างไรก็ตามถ้าฉันกรองส่วนอื่น ๆ ของมิติตัวเพิ่มประสิทธิภาพจะค้นหา PK / CI ของแต่ละตารางพื้นฐาน นี่คือคำถามที่ถาม: select od.[Year], AvgValue = avg(ObservationValue) from dbo.v_Observation o join dbo.ObservationDates od on o.ObservationDateKey = od.DateKey where o.ObservationDateKey >= 20000101 and o.ObservationDateKey <= 20051231 group by od.[Year]; select od.[Year], AvgValue …

2
วิธีการจัดเก็บข้อมูลอนุกรมเวลา
ฉันมีสิ่งที่ฉันเชื่อว่าเป็นชุดข้อมูลอนุกรมเวลา (โปรดแก้ไขให้ฉันถ้าฉันผิด) ซึ่งมีค่าที่เกี่ยวข้องมากมาย ตัวอย่างจะเป็นแบบจำลองรถยนต์และติดตามคุณลักษณะต่าง ๆ ของมันในระหว่างการเดินทาง ตัวอย่างเช่น: ประทับเวลา ความเร็ว | ระยะทางที่เดินทาง อุณหภูมิ ฯลฯ อะไรจะเป็นวิธีที่ดีที่สุดในการจัดเก็บข้อมูลนี้เพื่อให้เว็บแอปพลิเคชันสามารถสืบค้นฟิลด์เพื่อหา max, mins และพล็อตข้อมูลแต่ละชุดได้อย่างมีประสิทธิภาพเมื่อเวลาผ่านไป ฉันเริ่มต้นวิธีการแยกวิเคราะห์การถ่ายโอนข้อมูลและแคชผลลัพธ์ที่ไร้เดียงสาเพื่อไม่ให้ถูกจัดเก็บ อย่างไรก็ตามหลังจากเล่นไปสักครู่มันจะปรากฏขึ้นวิธีนี้จะไม่ขยายในระยะยาวเนื่องจากข้อ จำกัด ของหน่วยความจำและถ้าแคชจะถูกล้างข้อมูลทั้งหมดจะต้องมีการแยกวิเคราะห์และแคชอีกครั้ง นอกจากนี้สมมติว่าข้อมูลถูกติดตามทุกวินาทีด้วยความเป็นไปได้ที่หาได้ยากของชุดข้อมูลมากกว่า 10 ชั่วโมงเราแนะนำให้ตัดทอนชุดข้อมูลโดยการสุ่มตัวอย่างทุก ๆ N วินาทีหรือไม่?

2
เกิดอะไรขึ้นในจุดตรวจสอบ PostgreSQL
นี่เป็นส่วนหนึ่งของบันทึกด่านของฉัน: 2014-03-26 11:51:29.341 CDT,,,18682,,532854fc.48fa,4985,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 15047 buffers (1.4%); 0 transaction log file(s) added, 0 removed, 30 recycled; write=68.980 s, sync=1.542 s, total=70.548 s; sync files=925, longest=0.216 s, average=0.001 s",,,,,,,,,"" 2014-03-26 11:56:05.430 CDT,,,18682,,532854fc.48fa,4987,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 16774 buffers (1.6%); 0 transaction log file(s) added, 0 removed, 31 …
22 postgresql 

1
แทรกด้วย OUTPUT ที่สัมพันธ์กับตารางคิวรีย่อย
ฉันกำลังแก้ไขโครงสร้างของฐานข้อมูล เนื้อหาหลายคอลัมน์ของตารางสถาบันการเงินจะต้องมีการโอนเข้ามาในตารางบุคคล FinancialInstitution เชื่อมโยงกับบุคคลที่มีคีย์ต่างประเทศ FinancialInstitution แต่ละรายการต้องการรหัสของบุคคลที่เกี่ยวข้อง ดังนั้นสำหรับแต่ละบรรทัดใหม่ที่แทรกใน Person ID ของบรรทัดใหม่นี้ (IDENTITY) จะต้องถูกคัดลอกกลับไปยังบรรทัดที่เกี่ยวข้องของ FinancialInstit วิธีที่ชัดเจนในการทำเช่นนี้คือรหัส T-SQL ซ้ำ ๆ แต่ฉันสนใจที่จะรู้ว่ามันเป็นไปได้ที่จะทำเฉพาะกับการดำเนินการตามชุด ฉันจินตนาการถึงระดับภายในของคำขอดังกล่าวจะเป็นเช่น: INSERT INTO Person (Street1, Number1, City1, State1, PostCode1, CountryId1, WorkDirectPhone1, Fax1, Email1) OUTPUT inserted.Id, FinancialInstitution.Id SELECT Id, Street, Number, City, [State], PostCode, CountryId, PhoneNumber, Fax, Email FROM FinancialInstitution; น่าเสียดายที่ดูเหมือนว่า OUTPUT จะไม่สามารถมีความสัมพันธ์แบบนั้น …

5
PostgreSQL: วิธีการสำรองข้อมูลเพียงหนึ่ง Schema จากฐานข้อมูลและเรียกคืนบนเซิร์ฟเวอร์อื่น
ฉันมีฐานข้อมูลชื่อ "A" ซึ่งมีสองสกีมา "B" และ "C" ต้องการสำรองและกู้คืน Schema "B" บนเซิร์ฟเวอร์อื่นหรือไม่ ไม่แน่ใจว่าจะทำอย่างไรเมื่อฉันยังใหม่กับ Postgres ฉันต้องสร้าง DB ใหม่ในเซิร์ฟเวอร์ใหม่เป็นชื่อ "A" แล้วเรียกคืน Schema "B" ในนั้น กรุณาช่วยด้วยคำสั่ง --- ข้อมูลจากความคิดเห็นต่อคำตอบของปีเตอร์: ฉันต้องการสำรองและกู้คืนข้อมูล Schema "B" + ประการที่สองฉันลืมที่จะพูดถึงว่า Postgresql 9.1 ทำงานบน Ubuntu 12.04

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.