mysql研究内容_基于MySQL数据库的数据管理的研究
【摘 要】MySQL 是一種開放源代碼的關系型數據庫管理系統,MySQL數據庫系統使用最常用的數據庫管理語言,即結構化查詢語言進行數據庫管理。緩存管理是對于文件數據在內存中的特殊管理,基于內存管理,向文件系統提供服務。而在內存管理器將緩存頁面真正寫入磁盤時,又調用文件系統的接口然后走磁盤設備驅動。本章將介紹基于MySQL數據庫中緩存管理等知識。
【關鍵詞】MySQL;緩存;查詢
在數據庫中,用戶可能多次執行相同的查詢語句。為了提高查詢效率,數據庫會在內存在劃分一個專門的區域,用來存放用戶最近執行的查詢,這塊區域就是緩存。因為內存的運行速度要比硬盤快的多。為此通過緩存機制,就可以提高查詢的效率。當用戶下一次再執行相同查詢時,就可以直接從緩存中獲取數據,而不用到硬盤中的數據文件中去讀取數據,也可以省去相關解析的工作。
1.數據管理的應用
并不是在任何情況下數據管理都能夠起到應有的效果。如果企業有一個不經常改變的表并且服務器受到這個表的大量的相同查詢時,數據管理才能夠起到不錯的效果。通常情況下,針對Web的應用,效果會比較明顯。如現在在數據庫中有一張產品信息表。企業的用戶需要通過網頁來查詢產品的信息。如果在系統設計時,默認查詢的結果是顯示最近一個月交易過的產品信息。那么每次用戶按默認情況查詢產品信息時,將都會從緩存中獲取信息(如果相關的信息沒有被更新過)。此時系統查詢的速度就會比較快。
如果企業有一個不經常改變的表并且服務器受到這個表的大量的相同查詢時,筆者就建議大家啟用數據管理機制。在啟動之前,可以先使用命名來查詢現在系統緩存是否開啟。如果查詢的結果是YES的話,那么就說明系統中已經開啟了數據管理機制。
只有當數據庫里已經有了足夠多的測試數據時,它的性能測試結果才有實際參考價值。如果在測試數據庫里只有幾百條數據記錄,它們往往在執行完第一條查詢命令之后就被全部加載到內存里。
2. 使用數據管理的方式
并不是在任何情況下,數據管理都會起到改善查詢的效果。在以下幾種情況,數據管理機制的效果并不會很大。
一是查詢所涉及到的表會經常更改。如在一個進銷存管理系統中,可能會有產品與銷售記錄兩張表格。產品表一般不怎么會更新,而銷售記錄表就可能每分鐘都會發生變化。此時對于銷售記錄表來說,采用緩存機制就不會起到多大的效果。因為根據緩存的工作原理,當某個表被更改后,其對應的數據管理的相關條目就會被清空。
二是查詢緩存不使用與服務器方便些的語句。根據B/S或者C/S架構,可以將相關應用分為服務器斷和客戶端兩類。在使用數據管理時,數據庫管理員要考慮到,在MySQL數據庫中,查詢緩存并不適用于服務器方所編寫的查詢語句。當數據庫管理員正在使用服務器方編寫的語句時,要注意到這些語句并不會應用緩存技術。
三是查詢時使用緩存的兩個基本條件:所采用的查詢語句完全一致。不僅包括查詢的字段,也包括查詢的條件。如果用戶查詢一個產品信息表,使用了查詢條件,只查詢最近一個月新建的產品信息。顯然此時查詢的結果是查詢的子集,應該可以使用數據管理。數據庫仍然會先重新解析SQL語句,然后從硬盤上的數據文件中去獲取數據。
數據類型的大小也會影響到基礎表的大小。如對于MEDIUMINT和INT兩個數據類型,其都可以用來保存整數型的數據,只是其能夠保存的精度不同而已。
用戶在查詢語句中,使用了自定義函數、自定義變量或者因引用了系統數據庫中的表,那么緩存機制可能會失效。
3.提高數據管理的使用效率
通過數據庫的合理設計,可以提高緩存的使用效率,擴大緩存的使用領域。具體的說,數據庫管理員可以從如下幾個方面出發。
⑴根據數據變化的頻率來分解表
如現在有產品基本資料與產品最新庫存兩部分內容。在不考慮緩存的情況下,可以將產品基本資料與產品庫存放在同一個表中,然后通過其他作業來更新這個庫存數量。如此的話,在前臺界面中,就可以直觀的反映出產品的庫存數量。但是從緩存的設計角度來看,這么操作并不是很合理。因為產品信息相對來說不怎么會變化,而庫存數量卻經常在發生變化。如果將他們放在同一張表上,由于庫存數量的不斷更新,數據管理中的內容就會不斷被清空(與產品信息表相關的數據管理)。此時如果很多用戶要查詢產品的描述、規格(他們可能并不關注產品的庫存),那么他們就無法使用數據管理。因為緩存中沒有相關的數據(由于庫存數量不斷變化而被清空)。
遇到這種情況時,數據庫管理員就可以將庫存數量與產品基本信息存放在兩張不同的表上,然后通過關鍵字來進行關聯。這么做的好處就是庫存數量更新并不會影響到產品基本信息表所對應的數據管理(他們是兩張表)。從而提高產品信息查詢時的緩存命中率。
⑵采用默認條件的查詢
在上面的分析中筆者談到,要兩條完全相同的SQL語句才能夠使用緩存。條件不同或者使用的字段不同,數據庫系統都不會使用緩存來進行查詢優化。
采用默認條件的查詢來提高緩存命中率。如在設計產品信息查詢這個功能,可以考慮默認查詢全部信息或者指定某個固定的條件。如此就可以提高緩存的命中率。而不要在不同的用戶界面設置不同的默認值。某些應用系統,為了提高界面的友好性,會給用戶提供一些個性化設置的參數,以保存用戶的個性化內容。此時雖然可以提高界面的人性化,但是顯然會降低數據管理的命中率。遇到這種情況時,數據庫管理員就需要在人性化設計與系統的查詢性能之間進行均衡。
不同的應用針對同一個表格的相同查詢,其查詢語句最好相同。如現在對于產品信息,即可以通過產品信息窗口進行查詢,也可以根據報表來查詢。此時其對應的后臺表格是相同的。只要其執行的查詢語句相同、并且在這段時間之內數據庫表格沒有發生變化,那么系統就可以從緩存中獲取數據。在實際工作中,窗體與報表往往是有不同的人設計與開發的。不同的用戶之間要統一SQL語句的書寫規范。項目管理員要根據實際情況來制定相關的規則。
⑶提高緩存空間大小來提高數據庫的緩存使用率
當數據管理滿時,新的數據會覆蓋舊的數據。在這種情況下,即使查詢的語句相同、表格也沒有發生變化,數據庫系統仍然要從硬盤上的數據文件中去獲取數據,所以,應該增加服務器上緩存的空間。
總之,MySQL提供了TCP/IP、ODBC和JDBC等多種數據庫連接途徑,提供用于管理、檢查、優化數據庫操作的管理工具。利用MySQL技術可以很好地對系統的緩存進行管理,提高了查詢的效率,提高緩存的使用率,靈活的緩存可以說不僅大大減輕了服務器的壓力,而且因為更快速的用戶體驗而方便了用戶。
參考文獻:
[1]《php+mysql完全學習手冊》黃桂金,清華大學出版社,2008-6.
[2]《mysql高效編程》王志剛,人民郵電出版社,2012-1.
[3]《php+mysql動態網站開發指南》楊智宇,科學出版社,2008-6.
作者簡介:
李亞鵬(1970-),男,漢族,吉林省公主嶺市人,副教授,研究方向:計算機軟件和硬件的教學、研制以及開發工作。
總結
以上是生活随笔為你收集整理的mysql研究内容_基于MySQL数据库的数据管理的研究的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百战RHCE(第一战:Linux基础命令
- 下一篇: 揭秘北京龙泉寺,连清华北大学子都排队出家