詹英
(浙江交通職業技術學院,浙江 杭州 311112)
數十年的教學方式改革,是為了努力不讓一個學生掉隊,努力讓學生達到預期的進步。課堂學習環境和學習方式對學生是否能達到預期的目標有著很大的影響。提高學生課程的吸引力是教師一直努力的目標。為了提高學生成績,同時需要他們心理保持健康,教師不能單純要求學生刻苦學習,這樣只會加重學生的壓力和心理負擔,需要通過重新設計科學的教與學的方式吸引學生來加強和加速學習。本文著眼于構想和重塑一個以最佳可用科學為依據的教與學策略,以減輕學生所經歷的學習艱苦為目標,提出基于階梯式目標的課堂教學策略,把學生學習目標設置成階梯式遞進目標,由簡到難,不斷創造學有收獲的快樂,引導學生更深入地學習。這是一種由學生主導但由教師促進的教學法,便于把基于階梯式目標的課堂教學策略應用于數據庫查詢優化課堂,迅速響應反饋學生的學習結果,讓學生在學習中很快獲得學習成就感,并迅速投入下一個更高目標。最后觀察教學效果,為更多的課堂提供實踐經驗。讓它更適用于數學課及科學和社會研究等課程。
數據庫具有廣闊的市場空間,經中國信通院測算,2020年,全球數據庫市場規模為671億美元,其中中國數據庫市場規模為35億美元(約合241億元人民幣),占比5.2%[1]。數據庫設計與開發的人才需要不斷的系統性訓練,形成技術積累。因此,他們不但需要積累豐富的理論知識,也需要經歷大量的工程實踐。目前,數據庫領域產教融合的技術人才短缺,研發、測試、維護數據庫的技術人員數量不足,嚴重影響著數據庫管理與大數據分析產業的發展。數據庫相關課程的教學水平需要提升。在數據庫技術課程中,數據查詢技術是數據庫核心技術,80%的數據庫性能問題由SQL導致,提高數據庫查詢優化技術實踐能力是數據庫相關儲備人才所應具備的重要核心技能,有限的查詢基礎,無限的查詢優化[2]。數據查詢優化是一個有難度的實驗內容,教學的難點是提高學生不斷優化查詢速度的能力,采用基于階梯式目標的課堂教學策略是否可以達到激勵學生不斷挑戰更優化的查詢速度呢?
基于階梯式目標的課堂教學策略是把學生學習目標設置成階梯式遞進目標,為學生遞進學習提供不同難度的目標。同一個信息查詢要求,可以由不同的SQL 查詢語句來達到同一查詢目標,但速度上也會有差別,作為未來數據崗位從業人員,要思考不同的查詢語句為何會有不同的查詢速度,并為提高查詢速度而不斷優化查詢技能,所以為“數據庫查詢優化”的課堂教學設置四個不同層次的目標。
目標1:學生的良好溝通能力,因為查詢任務來源于現實用戶需求,所以要充分溝通,獲得可以查詢的數據,實現查詢需求。
目標2:使學生掌握數據庫簡單查詢基礎技術,理解和掌握關系代數。
目標3:掌握“如何優化SQL 查詢效率,達到提高查詢速度的目標”的方法,這個目標可以根據學生的水平,分幾個階梯小目標,查詢優化技術提升無止境,只要稍微提升查詢速度,學生的查詢優化技能就上一臺階。
目標4:理解查詢速度提速的數學原理,提升學生的創新精神。
基于階梯式迭代目標的“查詢優化”教學策略,使學生可以掌握有限的查詢技術基礎,達到無限的查詢優化能力。教師為學生提供支持性學習資料,學生自主按需選擇學習內容,在不斷挑戰更高的查詢優化目標時,獲得溝通能力、基本技術能力、優化能力、創新能力。圖1呈現了基于階梯式目標迭代的課堂教學任務層次圖。有限的基礎知識,無限的創新能力。

圖1 基于階梯式目標迭代的課堂教學任務層次圖
目前,很多程序都要與數據庫打交道,所以教學內容傾向于選擇基于真實情境的案例,比如某電商購物平臺,購買者需要快速得到想要的產品數據信息,或者,數據分析員需要獲得電商產品銷量情況。如果數據查詢時間長,系統反饋數據慢,將給用戶帶來不好的購物體驗。在一定的硬件設備下,優化數據查詢策略,可以縮短獲得數據的時間,同時也能夠很好地向學生解釋數據查詢的操作性和商業價值,對隱匿在操作背后的知識點提供教學視頻。例如,某電商銷售數據庫包含order 表,有11 個字段10 萬多條記錄,如表1所示。

表1 某電商銷售數據表order
具有實踐性的教學內容讓學生在實踐過程中獲得與技術環境的交流互動體驗,在不斷反思的基礎上逐漸生成實踐經驗。依賴授遞式的教無法解決學生實踐性知識之需,只有在實操中反思,才能逐漸增長實踐性經驗。學生在實操過程中,特別是當遭遇困難時,在尋找解決方案過程中,能學會融會貫通,捕捉靈感,在尋求解決方案中體悟技術之美。
比如,在數據查詢優化課堂,高等級的學習目標提出從10萬多條銷售的數據中查詢使用不同購物渠道的分類購物次數,如表2所示,要求達到的查詢速度為1 000ms。

表2 使用不同購物渠道的分類購物次數
學生給出的查詢SQL語句如下:
語句一:
學生獲得查詢優化的實踐經驗是在完成具體任務的過程中,在解決具體問題的過程中,實現“做中學”。查詢速度慢的原因很多,有硬件配置原因,比如內存不足、網速慢,輸入輸出吞吐量小等,在硬件配置不變的情況下,主要是查詢優化不夠。比如,沒有合理使用索引,沒有合理化“計算列”,查詢結果返回數據大,讀寫競爭資源鎖定策略不合理,查詢過程出現了非必需的行和列數據等。
語句一的執行順序如下:From子句庫中獲取整張表的數據,Where子句選擇所有非空的行,Group by子句分組,count(*)聚集函數統計行數,最后為用戶返回統計結果,如表2所示。
評估分析語句一,From子句庫中獲取整張表的數據,由于數據量較大,需要花費較長時間,對于大的數據行進行分組要消耗大量的資源,需要查詢優化。
怎樣優化呢?比如索引可以提高大部分的數據查詢效率。在語句一的基礎上建立索引是否可以提高查詢效率呢?學生嘗試后很快就獲知對platfrom-Type字段建立索引無法提高語句一的查詢速度,語句一的查詢速度不能提高的原因是什么。在實驗中學習,學生的探究問題的興趣就來了。原因是當索引列的值重復度很高時,創建索引對提高查詢速度沒有幫助。例如order 表中的字段platfromType 的不同取值有5個,而記錄數達到10萬多條,所以在platfromType字段創建索引對提高查詢速度沒有幫助。
教學內容的真實實踐性有助于提高學生對技術的商業價值認同感,并樂于學習。
基于階梯式目標迭代的課堂教學著眼于讓學習內容難度不斷遞增,每次對學生提出新內容和新目標時,激發學生通過不斷的探究和實驗來挑戰新難度,提升構建解決問題的能力。創造性思維建立在基礎學習內容之上。
提高語句一的查詢效率有沒有新思路呢?新目標提出的同時,教師可以給出合適的提示。比如思考數據類型的選擇對查詢效率的影響。告訴學生查詢耗時和字段值總長度成正比,學生就會思考platfrom-Type 字段的數據類型不用Char 類型,如果用Varchar是否對提高查詢效率有幫助。
在學生通過實驗得到肯定答復時,教師繼續提出新目標:繼續調整數據類型,是否可以獲得更高優化效率呢?幫助學生不斷思考探究實驗,來比較體驗查詢優化的效果。從而得到選擇合適的數據類型可以減少存儲空間和查詢時間,提高數據庫查詢性能的結論。比如將platfromType 字段的數據類型從字符轉換為整型數據,比如整數1代表App,2代表Web 網站,3代表支付寶,4 代表微信,查詢優化可以得到大幅提高。
在學生通過實驗獲得查詢提速的同時,教師繼續提出新目標,調整數據,鼓勵學生取得更高的查詢優化性能。適時告訴學生在where 子句中對字段進行null值判斷,將導致耗時的全表掃描,詢問學生是否有解決方案。啟動學生的發散性思維,在實驗中要考慮確保表中列platfromType 沒有null 值,比如在建表結構時,設置platfromType 字段默認值為0,用0 代表null值。
創意創新也需要專業知識。當了解數據查詢是如何工作的,才能開始思考如何改進數據查詢的技術。例如,同樣要查詢使用不同購物渠道的分類購物次數,要求學生達到目標3 的查詢速度為500ms。當學生開始有好奇心和興趣時,高階思維和深厚的基礎知識可以為創新與創造提供梯子,帶來更深入的理解和新的創造性成果。最終將數據查詢知識應用于大數據快速分析的創造性解決方案。教師進一步提高難度,在將platfromType設置成shortint時,可以提高查詢速度,但降低了數據可理解性,用戶必須要額外理解數字0、1、2、3、4代表什么,當購物渠道類型增加時如何管理添加新渠道的信息,教師適時地提示增加購物平臺platfrom表,如表3所示。

表3 platfrom表結構
這時查詢就涉及兩張表,關聯查詢概念被引出,在數據庫中做關聯查詢,則可能需要重復地訪問某一部分的數據。學生在掌握了數據查詢的基礎技術后,教師為他們準備查詢需要的關系代數知識,扎實的關系代數知識為查詢優化提供有力保障。
教師進一步提出新的目標:如何在實現大表order與小表platfrom進行關聯查詢時,不降低查詢效率呢?比如拆分數據庫,減小表的尺寸,在應用層做關聯查詢,方便進行并行訪問與處理,或者分析某類查詢的頻率,在小尺寸數據基礎上實現利用緩存來進行查詢。有限的查詢基礎,無限的查詢優化可能。隨著硬件的提升,查詢技術的優化,查詢優化目標將會不斷實現。
教師的實踐性知識往往通過教訓和成功等直接經驗的方式獲得。同樣,對學生來說查詢優化實戰經歷可以增加查詢優化經驗,在教學過程中要促進學生將查詢優化經驗(包括失敗的體驗)總結出來,學生是否有體驗實驗、思考實驗、研究實驗,創新查詢優化的意識,決定能否積累和生成查詢優化實戰性知識的關鍵因素。
學生自主學習探究與教師講解相互配合,開展一對一交流輔導,使掌握不同層次的查詢優化技能的學生可以自由選擇嘗試完成不同難度層級的學習目標,當學生的初始層次得到尊重時,他們會感到被包容并嘗試去解決問題。在面對他經過跳一跳就有可能達到目標的包容的學習環境時,注意力和執行學習的能力就會加強。當學生能夠積極主動地參與有意義的、有互動的教學活動中,并能夠收獲達到每一個目標時的快樂,如果學習就像游戲,他們就會忘掉時間,自然達到最好的學習效果。
讓學生獲得不同難度的指導,促進學生的經驗積累,并鼓勵學生主動總結經驗,梳理查詢優化技術的原理,實戰性知識又促進他們更上一臺階。在具體教學中,教師面臨隨時做出解釋與決策,因為,學習沒有一成不變的模式,會根據千變萬化的具體情境而不同。為促進學生主動深入地學習,教師需要引導學生如何學習,為他們提供練習基本技能、體驗達到不同目標的快樂學習實驗平臺,讓學生獲得數據查詢優化等技能。教師通過積極的反饋支持學生,在課堂中提供聯系實際的數據優化任務,為學生創造引人入勝的學習體驗,加上適量的挑戰和支持,建立挑戰新高度的毅力和愿望。鼓勵學生提出問題、保持好奇心和參與探究,開發和測試假設,嘗試實驗,鼓勵他們在失敗時繼續前進。告訴學生,在嘗試失敗后,停止再一次實驗不會促進有效的問題解決。培養“失敗是成功之母”的心態,盡管失敗了,但仍會堅持。
比如,查詢購買衣服次數或金額的最多的前1 000個客戶,以方便系統為這些用戶推送更多優質衣服的廣告,提出達到目標2的查詢速度要求為1 000ms。當學生的查詢速度高于1 000ms 時,他沒有達到查詢優化要求,此時,教師分析學生的查詢命令的執行過程,并給出提示,鼓勵學生為達成目標繼續找到解決方法。當某學生達到查詢優化要求時,教師會提出更高的優化速度,鼓勵學生繼續挑戰。當學生較好地掌握了低數據量的查詢優化技能后,可以增加數據量,比如100億條或者更多,繼續鼓勵挑戰。更大的數據量更需要查詢優化,為客戶提供快速的數據反饋,實現商業價值。
在相同的機器配置和相同的數據庫系統下,不斷提高查詢優化標準,靈活地將教與學螺旋式向前推進,學生完成階段查詢優化目標后,會得到獎勵和成績,從而達到更高的查詢優化水平。學生失敗時,會給出示例性思路,鼓勵他繼續嘗試。不管學生的優化水平如何,都會根據學生的當前優化能力,提出稍高的新要求,像游戲一樣挑戰適應個體的新難度。最終評價學生的查詢優化提升度,給出最終的成績。
越來越多的研究為引導式或積極的教學方法提供了依據[3]。當學習體驗是主動的、引人入勝的、有意義的、互動的、迭代的和快樂的,而不是被動的、分散注意力的和無意義時,學生可以很好地取得學習成果。
與傳統的直接教學相比,基于階梯式目標難度遞增的課堂教學策略的優勢是學習是主動的,學習是可選擇的,學習是沒有強制的,學習是有趣的,學習在思想上是深入的,學習內容是自適應不同水平的學生,不同技術水平的學生都會有成長。這種教學策略鼓勵學生通過積極的探究過程發展起對技術的自我理解、實踐、應用、討論、質疑、探索、闡述和反思,給他們成長的時間。
當學生查詢優化能力達到目標3 時,繼續鼓勵學生提升優化能力到目標4,目標4 往往是一個沒有限制的目標,需要學生在鞏固基礎知識后,發揮創造性的思維,尋求創造性的新突圍。基于階梯式目標迭代的課堂教學策略不僅讓學生鞏固學到的知識,而且培養學生以自我為師的態度,并將這種學習能力轉移到各類新技術學習中。
當學習是快樂時,學習也更有可能堅持下去。教學的情感氛圍與學生學到多少有關,學生的積極學習情緒與更大學習收益有關,當學習很有趣時,則更有動力,壓力更小。積極的情緒狀態與好的認知表現有關[4],這些特征共同構成了主動、有趣的學習基礎。
參與度或專注度與所獲得學習成就有關[5]。基于階梯式目標迭代的課堂教學策略的優點,將在查詢優化課堂中得到驗證,在在線學習平臺上,積極參與并重復瀏覽數據查詢知識點的學生,都獲得了很好的學習效應量[6]。重復度高的學生可以定義他們有更高的專注度和興趣,重復度達到1.5的學生100%獲得高學習效應量。
提升課堂實踐是困難的,它需要教師、學校管理者提供支持適合課堂教學策略發展的平臺。比如,在規劃查詢優化的課堂教學時,需要怎樣的教學策略才能促進學生的查詢優化技能。基于階梯式目標迭代的課堂教學策略將真實實踐轉化為難度臺階式遞進的課堂實踐,讓學生積極參與有意義的知識迭代和快樂的技術探索體驗。教育的目標是不斷滿足學生的全面成長需求。就如在數據查詢優化課堂,要培養數據管理的人才,需要一步一個腳印,不走捷徑,從實踐中出真知,創新意味著需要不斷失敗和堅持實驗,才能讓國家掌握數據庫領域的話語權,為國育才。