❶ 數據是如何存儲的
轉自網友文章: 大型網站資料庫優化
千萬人同時訪問的網站,一般是有很多個資料庫同時工作,說明白一點就是資料庫集群和並發控制,這樣的網站實時性也是相對的。這些網站都有一些共同的特點:數據量大,在線人數多,並發請求多,pageview高,響應速度快。總結了一下各個大網站的架構,主要提高效率及穩定性的幾個地方包括:1、程序
程序開發是一方面,系統架構設計(硬體+網路+軟體)是另一方面。軟體架構方面,做網站首先需要很多web伺服器存儲靜態資源,比如圖片、視頻、靜態頁等,千萬不要把靜態資源和應用伺服器放在一起。一個好的程序員寫出來的程序會非常簡潔、性能很好,一個初級程序員可能會犯很多低級錯誤,這也是影響網站性能的原因之一。
網站要做到效率高,不光是程序員的事情,資料庫優化、程序優化這是必須的,在性能優化上要資料庫和程序齊頭並進!緩存也是兩方面同時入手。第一,資料庫緩存和資料庫優化,這個由dba完成(而且這個有非常大的潛力可挖,只是由於我們都是程序員而忽略了他而已)。第二,程序上的優化,這個非常的有講究,比如說重要一點就是要規范SQL語句,少用in 多用or,多用preparestatement,另外避免程序冗餘如查找數據少用雙重循環等。另外選用優秀的開源框架加以支持,我個人認為中後台的支持是最最重要的,可以選取spring+ibatis。因為ibatis直接操作sql並有緩存機制。spring的好處就不用我多說了,IOC的機制可以避免new對象,這樣也節省開銷。據我分析,絕大部分的開銷就是在NEW的時候和連接資料庫時候產生的,請盡量避免。另外可以用一些內存測試工具來做一個demo說明hibernate和ibatis誰更快!前台你想用什麼就用什麼,struts,webwork都成,如果覺得自己挺牛X可以試試用tapestry。用資料庫也未必不能解決訪問量巨大所帶來的問題,作成靜態文件硬碟的定址時間也未必少於資料庫的搜索時間,當然對資料的索引要下一翻工夫。我自己覺得門戶往往也就是當天、熱門的資料點擊率較高,將其做緩存最多也不過1~2G的數據量吧,舉個例子:◎ 拿網易新聞來說 http://news.163.com/07/0606/09/3GA0D10N00011229.html
格式化一下,方便理解:http://域名/年/月日/新聞所屬分類/新聞ID.html
可以把當天發布的、熱門的、流攬量大的作個緩寸,用hashtable(key:年-月-日-分類-ID,value:新聞對象),靜態將其放到內存(速度絕對快過硬碟定址靜態頁面)。通常是採用oracle存儲過程+2個weblogic,更新機制也幾乎一樣每簽發一條新聞,就會生成靜態頁面,然後發往前端的web伺服器,前端的web都是做負載均衡的。另外還有定時的程序,每5-15分鍾自動生成一次。在發布新聞的同時將數據緩存。當然緩存也不會越來越大,在個特定的時間段(如凌晨)剔除過期的數據。做一個大的網站遠沒有想像中那麼簡單,伺服器基本就要百十個的。這樣可以大大增加一台計算機的處理速度,如果一台機器處理不了,可以用httpserver集群來解決問題了。2、網路
中國的網路分南北電信和網通,訪問的ip就要區分南北進入不同的網路。3、集群通常會使用CDN與GSBL與DNS負載均衡技術,每個地區一組前台伺服器群,例如:網易,網路使用了DNS負載均衡技術,每個頻道一組前台伺服器,一搜使用了DNS負載技術,所有頻道共用一組前台伺服器集群。網站使用基於Linux集群的負載均衡,失敗恢復,包括應用伺服器和資料庫伺服器,基於linux-ha的服務狀態檢測及高可用化。
應用伺服器集群可以採用apache+tomcat集群和weblogic集群等;web伺服器集群可以用反向代理,也可以用NAT的方式,或者多域名解析都可以;Squid也可以,方法很多,可以根據情況選擇。4、資料庫因為是千萬人同時訪問的網站,所以一般是有很多個資料庫同時工作的,說明白一點就是資料庫集群和並發控制,數據分布到地理位置不同的數據中心,以免發生斷電事故。另外還有一點的是,那些網站的靜態化網頁並不是真的,而是通過動態網頁與靜態網頁網址交換做出現的假象,這可以用urlrewrite這樣的開源網址映射器實現。這樣的網站實時性也是相對的,因為在資料庫復制數據的時候有一個過程,一般在技術上可以用到hibernate和ecache,但是如果要使網站工作地更好,可以使用EJB和websphere,weblogic這樣大型的伺服器來支持,並且要用oracle這樣的大型資料庫。
大型門戶網站不建議使用Mysql資料庫,除非你對Mysql數據的優化非常熟悉。Mysql資料庫伺服器的master-slave模式,利用資料庫伺服器在主從伺服器間進行同步,應用只把數據寫到主伺服器,而讀數據時則根據負載選擇一台從伺服器或者主伺服器來讀取,將數據按不同策略劃分到不同的伺服器(組)上,分散資料庫壓力。
大型網站要用oracle,數據方面操作盡量多用存儲過程,絕對提升性能;同時要讓DBA對資料庫進行優化,優化後的資料庫與沒優化的有天壤之別;同時還可以擴展分布式資料庫,以後這方面的研究會越來越多; 如果我來設計一個海量資料庫,可能首先考慮的就是平行擴容性,原因很簡單,我沒有辦法預估將來的數據規模,那我也就沒有邊界可言,因此,基本上首選dbm類哈希型資料庫,甚至,對於實時性要求很高的資料庫,可能會自行設計庫。 當我們使用業務描述腳本、事務批處理機、目錄服務、底層存取來劃分一個資料庫系統之後,其實,所謂的海量數據需求,也就不是那麼難辦到了。 嗯,這樣還有一個額外的好處,就是由於平行擴容性很好,因此,前期可以以較低成本搭建一個簡單的架子,後期根據業務量逐出擴容。這對很多企業來說,就是入門門檻很低,便於操作,且商業風險也小。MySQL比起動輒幾十萬美金,搭建豪華的Oracle平台,成本低多了。
❷ C/S的影院座位表情況怎樣存進SQL server 2005里
影院座位分布不同。。。表設計也不同
可以弄成以下幾張表
一張表存放座位的區域 例如A、B、C等
ID主鍵 QUYU
一張表存放座位的行關聯到區域表
ID 主鍵 QUYUID HANGHAO
一張表存放座位的排關聯到行表
ID 主鍵 HANGID PAIHAO
或者直接存放到一張表中
ID 主鍵 QUYU HANGHAO PAIHAO
如果有包廂的另設
❸ 跪求資料庫存儲過程詳解!!
首先你要懂的sql語句,如果不懂,請先把這個學好再來學存儲過程。
大部分存儲過程的主要結構:
參數:即sql語句的條件,如select * from text where id=@id. @id就是參數。你在調用這個存儲過程時就要傳過來的數據。
復雜的存儲過程結構:
觸發器,游標.....這些就比較復雜點,通常是用來處理復雜的數據時使用。
觸發器:簡單點說就是一組存儲過程一起執行。對了就過去,錯了就返回。
其它的就要看你要怎麼調用了,好好學吧
❹ 如何查看mysql資料庫存儲位置
第1步:
打開mysqml文件夾,顯示的文件如下,然後找到my.ini文件,如圖所示。
第2步:
選中my.ini文件,這時候點擊滑鼠右鍵依次選擇」打開方式「然後選擇」記事本打開「
第3步:
以記事本的方式打開my.ini文件後,按ctrl+f搜索」datadir「就可以找到你資料庫的物理路徑
第4步:
如果你想修改資料庫文件的存儲位置,可以直接在這里修改,如下圖紅框所示。
第5步:
按照上面所找到的路徑,我們打開上面的路徑的data文件夾,顯示如下圖。
第6步:
如果想對資料庫進行搬遷,只需要復制」data「這個文件夾,覆蓋新環境下的」data「文件就可以了。
❺ 如何在MySQL資料庫中存儲大量的位置信息
如何在MySQL資料庫中存儲大量的位置信息
mysql資料庫文件一般是存在mysql的安裝目錄下制定文件夾,或者直接通過查看配置文件後確定其存儲的目錄。
❻ 資料庫的4種狀態是什麼
Oracle10g資料庫的4種存儲形式
資料庫的存在一定需要有永久性存儲方式和介質。Oracle自然也不例外,在Oracle10g中,有4種存儲形式,分別是操作系統文件,裸分區,自動存儲管理,集群系統OCFS(RAC)。下面分別說一下這4種存儲形式。 1 操作系統文件。 這種是大家最常用的方式了,也是非商業運行模式(比如開發或者開發階段的測試環境)下最常用的形式。當大家安裝Oracle的時候,如果選用了操作系統文件的存儲形式,那麼就會把Oracle的數據存儲在操作系統中,以文件的形式存在。就好像我們玩某些單機版游戲,你的存檔就是操作系統的文件一樣。用文件形式存儲數據,帶來的優點就是易於資料庫移動。比如你把Oracle的數據文件直接到一台電腦上,就可以很快復制出一個一樣的資料庫系統出來。在文件的讀寫的時候,操作系統通常會提供緩存形式進行讀寫,避免過多讀寫硬碟對磁碟造成很大傷害。所以用操作系統文件形式存儲數據,等於先天性獲得了操作系統的緩存功能。
2 裸分區。裸分區就是把資料庫直接寫在磁碟上,不再經過操作系統這一層,Oracle專門來對這個分區進行讀寫。因為沒有了操作系統這一層,所以讀寫起來的速度和性能是質一般的飛躍的,在某些對Oracle讀寫非常頻繁的資料庫應用中,採用裸分區形式存儲數據甚至可以提高30%以上的性能。當然,如果數據存儲是採用的操作系統文件,如果在Unix下採用RAID對於文件讀寫操作頻繁的情況下也是一個可以提高性能的手段。
3 自動存儲管理。 自動存儲管理通常也被稱為ASM,是在Oracle 10g以後才提供的一種新的存儲形式。這種存儲形式貌似是前兩種存儲形式的折中。既不是用的host操作系統的文件系統,也不是裸分區的形式直接由Oracle讀寫。而是可以看作為一種Oracle特有的文件系統形式。在ASM上可以存儲數據文件,控制文件,日誌文件等等,在ASM中,這些也是以文件的形式存在的,只不過這個時候的文件格式是Oracle自有的ASM形式。在Linux中和ASM有點相似的就是LVM(邏輯Volume管理),也是可以看作是一種自有的新的文件系統形式。
4 集群系統OCFS(RAC)。RAC的全稱是什麼呢,就是Real Application Cluster,是一種在集群的環境下實現共享的一種資料庫存儲形式。在通常我們的資料庫,如果是單機版的資料庫,當數據文件磁碟不能訪問,那麼這個資料庫就掛掉了。如果是集群共享資料庫的話,其中一種方法就是在某個節點存放數據文件,其餘的資料庫都通過NFS或者Samba來進行共享,雖然資料庫的數據處理能力得到了很大的提高,不過如果這個存儲節點掛掉的話,同樣資料庫也就宕掉了。而OCFS則是一種無斷點恢復的存儲形式,在整體給人的感覺就是每台數據伺服器都有自己的文件系統,但是這些文件系統又彷彿只是同一個文件系統,因為數據更新或者其他的操作都是很統一的。即使某台電腦掛了,其餘的伺服器照樣運行,不會出現資料庫的異常,而如果想新加入一台伺服器也是很簡單的事。特別適合於商用的7X24這種服務形式。
Oracle10g中的4種數據存儲方式都介紹完了,我們最常用的自然是第一種形式,不過後面三種形式在商用環境下比較多。特別在大型商用對可靠性要去很高應用中,第四種RAC形式的使用是比較多的。當然,這里只是很簡要的介紹了一下幾個文件系統的概念。如果要仔細了解的話,當然是要好好查閱Oracle技術手冊了。
❼ C/S的影院座位表情況怎樣存進SQL server 2005里
應該不同的影廳座位情況不一樣吧?如果是有不同影廳的情況,那麼最起碼應該有如下表和欄位:
1. 影廳座位信息表:
ID(主鍵) 影廳ID(外鍵) 排號 座位號(或者使用排號+座號的方式如6.1就代表6排1號,兩欄位合並)
這個表應該基本上是靜態的,因為影廳的座位信息基本不會動。
2. 電影場次表:
ID(主鍵) 電影ID 時間 影廳ID ……
3. 電影票售出情況表:
ID(主鍵,電影票號) 場次號(2表的主鍵) 座位號(1表的主鍵) ……
應該是點擊某一場次的電影,才會出現你說的這個界面,根據資料庫中2表和1表,可以先取出該影廳的所有座位情況並顯示;其次根據2表和3表取出所有已售電影票,遍歷剛才的座位,將已售出的座位換顏色即可。
當然這里只是給一個思路,具體實現可能還是比較復雜,要考慮的很多,權當一個參考吧。
❽ mysql資料庫一個欄位存放多種狀態
資料庫中定義個int型欄位比如col
abc與或之後的結果賦值給col即可。
讀取的時候直接讀取。
&&可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。
比如:
inta1=1,b2=2,c3=3;
System.out.println((a1==b2)&&(b2==c3));
結果即為:false
❾ 資料庫中數據如何存儲
資料庫是一種文件系統
可以將數據導出為指定格式
❿ 資料庫中數據如何存儲
利用邏輯資料庫
和物理資料庫
來存儲
其中
邏輯資料庫主要包括表
,段,區,oracle數據塊。物理數據塊
包括
數據文件,聯機重做日誌文件等