คำชี้แจง: บทความนี้เป็นต้นฉบับของผู้เขียน และผู้พิมพ์ซ้ำจะต้องระบุ
ผู้แต่ง: Zeng Jin (qq:310575)
เมื่อเร็ว ๆ นี้ ฉันยุ่งอยู่กับการทดสอบประสิทธิภาพของซอฟต์แวร์ BI ของบริษัท ทุกวันนี้ ฉันทดสอบการทำงานพร้อมกันและความเสถียรของ PA เป็นหลักเมื่อ CUBE ใช้ ROLAP
ตารางและมิติที่เกี่ยวข้อง คิวบ์: ตารางข้อเท็จจริง sales_fact_1997 ตารางมิติ time_by_day; ลูกบาศก์: ยอดขาย
เนื้อหาการแก้ไข: ลบมิติ TIME เดิม สร้างมิติ TIME ใหม่ และแก้ไขคิวบ์ SALES
การแทรกข้อมูล:
1. การแทรกข้อมูลข้อเท็จจริง: คัดลอกข้อมูลของ sales_fact_1997 ผ่าน DTS และการกำหนดเวลา ความถี่คือ 10,000 ข้อความต่อนาที
คำสั่ง SQL ที่ใช้เป็นหลัก: เลือก 10,000 อันดับแรก * จาก sales_fact_1997
2. การแทรกข้อมูลมิติ: แทรกข้อมูลลงใน time_by_day ผ่านคำสั่ง SQL
คำสั่ง SQL ที่ใช้ในการทดสอบ:
1. การแทรกครั้งเดียว
INSERT INTO time_by_day
(time_id, the_date, the_year, month_of_year, Quarter,day_of_month)
ค่า ('1101', '1999-10-1', '1999', '10', 'Q4','1')
2. การแทรกเดี่ยว:
INSERT INTO time_by_day
(time_id, the_date, the_year, month_of_year, ไตรมาส, day_of_month)
เลือกด้านบน 1 time_id + 1 AS time_id, the_date + 1 AS the_date, YEAR(the_date + 1)
AS the_year, MONTH(the_date + 1) AS month_of_year, { fn QUARTER(the_date + 1)
} AS ไตรมาส, DAY(the_date + 1) AS day_of_month
จาก time_by_day
ORDER BY time_id DESC
3. การแทรกห่วง:
ประกาศ @MyCounter INT
SET @MyCounter = 0 /*ตั้งค่าตัวแปร*/
WHILE (@MyCounter < 2) /*ตั้งค่าจำนวนลูป*/
BEGIN
WAITFOR DELAY '000:00:10' /*เวลาหน่วงเวลา 10 วินาที*/
INSERT INTO time_by_day
(time_id, the_date, the_year, month_of_year, ไตรมาส, day_of_month)
เลือก TOP 1 time_id + 1 AS time_id, the_date + 1 AS the_date, YEAR(the_date + 1)
AS the_year, MONTH(the_date + 1) AS month_of_year, { fn QUARTER( the_date + 1)
} AS ไตรมาส DAY(the_date + 1) AS day_of_month
จาก time_by_day
ORDER BY time_id DESC
SET @MyCounter = @MyCounter + 1
จบ
4. ใส่ข้อมูลโดยให้เวลาเป็นตัวแปร
ประกาศ @MyCounter INT
ประกาศ @the_date datetime
SET @MyCounter = 0
SET @the_date = '1999-1-4'
WHILE (@MyCounter < 200000)
BEGIN
WAITFOR DELAY '000:00:10'
/*INSERT INTO time_by_day
(time_id, the_date , the_year, month_of_year, ไตรมาส, day_of_month)
เลือก TOP 1 time_id + 1 AS time_id, the_date + 1 AS the_date, YEAR(the_date + 1)
AS the_year, MONTH(the_date + 1) AS month_of_year, { fn QUARTER(the_date + 1)
} AS Quarter, DAY(the_date + 1) AS day_of_month
FROM time_by_day
ORDER BY time_id DESC
*/
ใส่ลงใน time_by_day (time_id,the_date)values('371',@the_date)
SET @the_date = @the_date + 1
SET @MyCounter = @ มายเคาน์เตอร์ + 1
จบ