導航:首頁 > 網站優化 > 大型門戶網站mysql優化技術

大型門戶網站mysql優化技術

發布時間:2020-08-19 11:13:52

1、什麼是Mysql優化?

優化資料庫的方法
1、選取最適用的欄位屬性
MySQL可以很好的支持大數據量的存取,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在創建表的時候,為了獲得更好的性能,我們可以將表中欄位的寬度設得盡可能小。
例如,在定義郵政編碼這個欄位時,如果將其設置為CHAR(255),顯然給資料庫增加了不必要的空間,甚至使用VARCHAR這種類型也是多餘的,因為CHAR(6)就可以很好的完成任務了。同樣的,如果可以的話,我們應該使用MEDIUMINT而不是BIGIN來定義整型欄位。
另外一個提高效率的方法是在可能的情況下,應該盡量把欄位設置為NOT NULL,這樣在將來執行查詢的時候,資料庫不用去比較NULL值。
對於某些文本欄位,例如「省份」或者「性別」,我們可以將它們定義為ENUM類型。因為在MySQL中,ENUM類型被當作數值型數據來處理,而數值型數據被處理起來的速度要比文本類型快得多。這樣,我們又可以提高資料庫的性能。
2、使用連接(JOIN)來代替子查詢(Sub-Queries)
MySQL從4.1開始支持SQL的子查詢。這個技術可以使用SELECT語句來創建一個單列的查詢結果,然後把這個結果作為過濾條件用在另一個查詢中。例如,我們要將客戶基本信息表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售信息表中將所有發出訂單的客戶ID取出來,然後將結果傳遞給主查詢,如下所示:
DELETEFROMcustomerinfo
WHERECustomerIDNOTin(SELECTCustomerIDFROMsalesinfo)
使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的SQL操作,同時也可以避免事務或者表鎖死,並且寫起來也很容易。但是,有些情況下,子查詢可以被更有效率的連接(JOIN)..替代。例如,假設我們要將所有沒有訂單記錄的用戶取出來,可以用下面這個查詢完成:
SELECT*FROMcustomerinfo
WHERECustomerIDNOTin(SELECTCustomerIDFROMsalesinfo)
如果使用連接(JOIN)..來完成這個查詢工作,速度將會快很多。尤其是當salesinfo表中對CustomerID建有索引的話,性能將會更好,

2、mysql最好的優化技巧

1、選取最適用的欄位屬性

MySQL 可以很好的支持大數據量的存取,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在創建表的時候,為了獲得更好的性能,我們可以將表中欄位的寬度設得盡可能小。例如,在定義郵政編碼這個欄位時,如果將其設置為CHAR(255),顯然給資料庫增加了不必要的空間,甚至使用VARCHAR這種類型也是多餘的,因為CHAR(6)就可以很好的完成任務了。同樣的,如果可以的話,我們應該使用MEDIUMINT而不是BIGIN來定義整型欄位。

另外一個提高效率的方法是在可能的情況下,應該盡量把欄位設置為NOT NULL,這樣在將來執行查詢的時候,資料庫不用去比較NULL值。

對於某些文本欄位,例如「省份」或者「性別」,我們可以將它們定義為ENUM類型。因為在MySQL中,ENUM類型被當作數值型數據來處理,而數值型數據被處理起來的速度要比文本類型快得多。這樣,我們又可以提高資料庫的性能。

2、使用連接(JOIN)來代替子查詢(Sub-Queries)

MySQL 從4.1開始支持SQL的子查詢。這個技術可以使用SELECT語句來創建一個單列的查詢結果,然後把這個結果作為過濾條件用在另一個查詢中。例如,我們要將客戶基本信息表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售信息表中將所有發出訂單的客戶ID取出來,然後將結果傳遞給主查詢,如下所示:

DELETE FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的SQL操作,同時也可以避免事務或者表鎖死,並且寫起來也很容易。但是,有些情況下,子查詢可以被更有效率的連接(JOIN).. 替代。例如,假設我們要將所有沒有訂單記錄的用戶取出來,可以用下面這個查詢完成:

SELECT * FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

如果使用連接(JOIN).. 來完成這個查詢工作,速度將會快很多。尤其是當salesinfo表中對CustomerID建有索引的話,性能將會更好,查詢如下:

SELECT * FROM customerinfo
LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.
CustomerID
WHERE salesinfo.CustomerID IS NULL

連接(JOIN).. 之所以更有效率一些,是因為 MySQL不需要在內存中創建臨時表來完成這個邏輯上的需要兩個步驟的查詢工作。

3、使用聯合(UNION)來代替手動創建的臨時表

MySQL 從 4.0 的版本開始支持 UNION 查詢,它可以把需要使用臨時表的兩條或更多的 SELECT 查詢合並的一個查詢中。在客戶端的查詢會話結束的時候,臨時表會被自動刪除,從而保證資料庫整齊、高效。使用 UNION 來創建查詢的時候,我們只需要用 UNION作為關鍵字把多個 SELECT 語句連接起來就可以了,要注意的是所有 SELECT 語句中的欄位數目要想同。下面的例子就演示了一個使用 UNION的查詢。

SELECT Name, Phone FROM client
UNION
SELECT Name, BirthDate FROM author
UNION
SELECT Name, Supplier FROM proct

4、事務

盡管我們可以使用子查詢(Sub-Queries)、連接(JOIN)和聯合(UNION)來創建各種各樣的查詢,但不是所有的資料庫操作都可以只用一條或少數幾條SQL語句就可以完成的。更多的時候是需要用到一系列的語句來完成某種工作。但是在這種情況下,當這個語句塊中的某一條語句運行出錯的時候,整個語句塊的操作就會變得不確定起來。設想一下,要把某個數據同時插入兩個相關聯的表中,可能會出現這樣的情況:第一個表中成功更新後,資料庫突然出現意外狀況,造成第二個表中的操作沒有完成,這樣,就會造成數據的不完整,甚至會破壞資料庫中的數據。要避免這種情況,就應該使用事務,它的作用是:要麼語句塊中每條語句都操作成功,要麼都失敗。換句話說,就是可以保持資料庫中數據的一致性和完整性。事物以BEGIN 關鍵字開始,COMMIT關鍵字結束。在這之間的一條SQL操作失敗,那麼,ROLLBACK命令就可以把資料庫恢復到BEGIN開始之前的狀態。

BEGIN;
INSERT INTO salesinfo SET CustomerID=14;
UPDATE inventory SET Quantity=11
WHERE item='book';
COMMIT;

事務的另一個重要作用是當多個用戶同時使用相同的數據源時,它可以利用鎖定資料庫的方法來為用戶提供一種安全的訪問方式,這樣可以保證用戶的操作不被其它的用戶所干擾。

5、鎖定表

盡管事務是維護資料庫完整性的一個非常好的方法,但卻因為它的獨占性,有時會影響資料庫的性能,尤其是在很大的應用系統中。由於在事務執行的過程中,資料庫將會被鎖定,因此其它的用戶請求只能暫時等待直到該事務結束。如果一個資料庫系統只有少數幾個用戶

來使用,事務造成的影響不會成為一個太大的問題;但假設有成千上萬的用戶同時訪問一個資料庫系統,例如訪問一個電子商務網站,就會產生比較嚴重的響應延遲。

其實,有些情況下我們可以通過鎖定表的方法來獲得更好的性能。下面的例子就用鎖定表的方法來完成前面一個例子中事務的功能。

LOCK TABLE inventory WRITE
SELECT Quantity FROM inventory
WHEREItem='book';
...
UPDATE inventory SET Quantity=11
WHEREItem='book';
UNLOCK TABLES

這里,我們用一個 SELECT 語句取出初始數據,通過一些計算,用 UPDATE 語句將新值更新到表中。包含有 WRITE 關鍵字的 LOCK TABLE 語句可以保證在 UNLOCK TABLES 命令被執行之前,不會有其它的訪問來對 inventory 進行插入、更新或者刪除的操作。

6、使用外鍵

鎖定表的方法可以維護數據的完整性,但是它卻不能保證數據的關聯性。這個時候我們就可以使用外鍵。例如,外鍵可以保證每一條銷售記錄都指向某一個存在的客戶。在這里,外鍵可以把customerinfo 表中的CustomerID映射到salesinfo表中CustomerID,任何一條沒有合法CustomerID的記錄都不會被更新或插入到 salesinfo中。

CREATE TABLE customerinfo
(
CustomerID INT NOT NULL ,
PRIMARY KEY ( CustomerID )
) TYPE = INNODB;

CREATE TABLE salesinfo
(
SalesID INT NOT NULL,
CustomerID INT NOT NULL,
PRIMARY KEY(CustomerID, SalesID),
FOREIGN KEY (CustomerID) REFERENCES customerinfo
(CustomerID) ON DELETECASCADE
) TYPE = INNODB;

注意例子中的參數「ON DELETE CASCADE」。該參數保證當 customerinfo 表中的一條客戶記錄被刪除的時候,salesinfo 表中所有與該客戶相關的記錄也會被自動刪除。如果要在 MySQL 中使用外鍵,一定要記住在創建表的時候將表的類型定義為事務安全表 InnoDB類型。該類型不是 MySQL 表的默認類型。定義的方法是在 CREATE TABLE 語句中加上 TYPE=INNODB。如例中所示。

7、使用索引

索引是提高資料庫性能的常用方法,它可以令資料庫伺服器以比沒有索引快得多的速度檢索特定的行,尤其是在查詢語句當中包含有MAX(), MIN()和ORDERBY這些命令的時候,性能提高更為明顯。那該對哪些欄位建立索引呢?一般說來,索引應建立在那些將用於JOIN, WHERE判斷和ORDER BY排序的欄位上。盡量不要對資料庫中某個含有大量重復的值的欄位建立索引。對於一個ENUM類型的欄位來說,出現大量重復值是很有可能的情況,例如 customerinfo中的「province」.. 欄位,在這樣的欄位上建立索引將不會有什麼幫助;相反,還有可能降低資料庫的性能。我們在創建表的時候可以同時創建合適的索引,也可以使用ALTER TABLE或CREATE INDEX在以後創建索引。此外,MySQL

從版本3.23.23開始支持全文索引和搜索。全文索引在 MySQL 中是一個FULLTEXT類型索引,但僅能用於MyISAM 類型的表。對於一個大的資料庫,將數據裝載到一個沒有FULLTEXT索引的表中,然後再使用ALTER TABLE或CREATE INDEX創建索引,將是非常快的。但如果將數據裝載到一個已經有FULLTEXT索引的表中,執行過程將會非常慢。

8、優化的查詢語句

絕大多數情況下,使用索引可以提高查詢的速度,但如果SQL語句使用不恰當的話,索引將無法發揮它應有的作用。下面是應該注意的幾個方面。首先,最好是在相同類型的欄位間進行比較的操作。在MySQL 3.23版之前,這甚至是一個必須的條件。例如不能將一個建有索引的INT欄位和BIGINT欄位進行比較;但是作為特殊的情況,在CHAR類型的欄位和 VARCHAR類型欄位的欄位大小相同的時候,可以將它們進行比較。其次,在建有索引的欄位上盡量不要使用函數進行操作。

例如,在一個DATE類型的欄位上使用YEAE()函數時,將會使索引不能發揮應有的作用。所以,下面的兩個查詢雖然返回的結果一樣,但後者要比前者快得多。

SELECT * FROM order WHERE YEAR(OrderDate)<2001;

SELECT * FROM order WHERE OrderDate<"2001-01-01";

同樣的情形也會發生在對數值型欄位進行計算的時候:

SELECT * FROM inventory WHERE Amount/7<24;

SELECT * FROM inventory WHERE Amount<24*7;

上面的兩個查詢也是返回相同的結果,但後面的查詢將比前面的一個快很多。第三,在搜索字元型欄位時,我們有時會使用 LIKE 關鍵字和通配符,這種做法雖然簡單,但卻也是以犧牲系統性能為代價的。例如下面的查詢將會比較表中的每一條記錄。

SELECT * FROM books
WHERE name like "MySQL%"

但是如果換用下面的查詢,返回的結果一樣,但速度就要快上很多:

SELECT * FROM books
WHERE name>="MySQL"and name<"MySQM"

最後,應該注意避免在查詢中讓MySQL進行自動類型轉換,因為轉換過程也會使索引變得不起作用。

3、開發大型門戶以及技術網站用什麼程序合適?

做門戶網站可以混編.不過最好的還是ASP 和ASP.NET 主要是用於門戶網站的後台建設.方便日後管理及更新.如其他非動態頁面可以用 DW 和RFONTPAGE去編輯 這樣比較省時間.

門戶網站最好是自己開發去製作.不要用別人的源碼.如果稍微一個不注意.一段代碼就讓你後悔.讓人給提權拿限後.真的是件麻煩的事.

4、正規大型門戶網站怎麼做seo

大型網站的SEO體系,在很大程度上依託於數據挖掘和分析來進行,99%的工作是在做站內優化。如何把深度挖掘的數據進行有效的分析,並分配到執行流程中去。通過分析搜索引擎的關鍵詞數據,我們可以有效規劃的網站架構以及內容建設方向。通過站內搜索的關鍵詞數據分析,我們可以快速上線用戶需求內容。創建一個有效的目標關鍵詞資料庫,可以周期性檢測關鍵詞排名績效以及和競爭對手的差距。數據挖掘分析的工作是持續的,SEO任務的配發基本都來自這個團隊。那接下來是產品上線的流程,這包括一個欄目,專題或者一個頁面的發布。涉及的方面如下:
1,標題的撰寫規范
2,正文部分行文的審查,基於seo的修正以及內鏈設置規范
3,發布後,頁面與其他的一些頁面的關聯關系。這個流程的設置,應找有實戰經驗的seo來規劃,每個階段的工作進行分解,然後出一份執行規范,讓人去高效執行即可。異常狀況的處理,也很重要。網站改版,宕機,收錄異常,流量異常,被誤傷懲罰,,,大部分網站都會面對這些突發異常問題,往往關鍵時刻的決策十分重要,處理方法必須快速,讓損失降低到最小。對外交流與合作從低層次來說,這多多少少可以促進外鏈建設。對外的合作和交流,這可以及時了解外圍最新的信息,諸如一些信息更新,策略的變化,讓團隊保持學習另外,建立與搜索引擎廠商的交流機制是必要的,尤其是大型網站。

5、什麼叫大型門戶網站

所謂門戶網站,是指通向某類綜合性互聯網信息資源並提供有關信息服務的應用系統。
而所謂的大型門戶網站只是泛指其規模。

例如中國四大門戶網站主要指的是新浪、網易、搜狐、騰訊四大網站。

門戶(portal)。原意是指正門、入口,現多用於互聯網的門戶網站和企業應用系統的門戶系統。顧名思義,門戶網站的意思就是這個網站是進入互聯網的入口,只要通過這個網站就可以獲取你需要的所有信息,或者達到任何你想要達到的網站。門戶網站聽起來就是包羅萬象的樣子。

門戶網站可分為綜合門戶、行業門戶、地區門戶等等,門戶網站的規模通常較大,知名度高,內容豐富,可靠性也較高。

新上網的用戶通常會先到門戶網站獲取一些基本信息,隨著上網經驗的增加,進一步擴大各種網站接觸面,因為門戶網站盡管信息豐富,但通常比較嚴肅,而且一些專業領域的內容比較欠缺,這樣對於一些專業人士就會逐漸尋找到自己感興趣的專業網站,這些專業網站可能規模不很大,但是比較深入,能提供專業信息,這也是為什麼除了門戶網站之外還有大量網站尤其生存發展的必要。事實上很多專業網站的人氣也很網,在各自所專業領域影響力比門戶網站可能更高,比如游戲網站、金融咨詢網站、旅遊網站等。

廣義的註解門戶網站

這里是一個應用框架,它將各種應用系統、數據資源和互聯網資源集成到一個信息管理平台之上,並以統一的用戶界面提供給用戶,使企業可以快速地建立企業對客戶、企業對內部員工和企業對企業的信息通道, 使企業能夠釋放存儲在企業內部和外部的各種信息。

狹義的註解門戶網站

是指通向某類綜合性互聯網信息資源並提供有關信息服務的應用系統。門戶網站最初提供搜索發動機和網路接入服務,後來由於市場競爭日益激烈,門戶網站不得不快速地拓展各種新的業務類型,希望通過門類眾多的業務來吸引和留駐互聯網用戶,以至於目前門戶網站的業務包羅萬象,成為網路世界的「百貨商場」或「網路超市」。從現在的情況來看,門戶網站主要提供新聞、搜索發動機、網路接入、聊天室、電子公告牌、免費郵箱、影音資訊、電子商務、網路社區、網路游戲、免費網頁空間,等等。在我國,典型的門戶網站有新浪網、網易和搜狐網等。
區域網即計算機局部區域網,它是在一個局部的地理范圍內,將各種計算機、外圍設備、資料庫等互相連接起來組成的計算機通信網,簡稱LAN。區域網是計算機通信網的一個重要組成部分,除完成一站對另一站的通信外,還通過共享的通信媒體如數據通信網或專用數據電路,與遠方的區域網、資料庫或處理中心相連,構成一個大范圍的信息處理系統,其用途主要在於數據通信與資源共享。

6、誰有大型門戶網站的技術解決方案?

一、建設網站前的市場分析
1、相關行業的市場是怎樣的,市場有什麼樣的特點,是否能夠在互聯網上開展公司業務。
2、市場主要競爭者分析,競爭對手上網情況及其網站規劃、功能作用。
3、公司自身條件分析、公司概況、市場優勢,可以利用網站提升哪些競爭力,建設網站的能力(費用、技術、人力等)。

二、建設網站目的及功能定位
1、為什麼要建立網站,是為了宣傳產品,進行電子商務,還是建立行業性網站?是企業的需要還是市場開拓的延伸?
2、整合公司資源,確定網站功能。根據公司的需要和計劃,確定網站的功能:產品宣傳型、網上營銷型、客戶服務型、電子商務型等。
3、根據網站功能,確定網站應達到的目的作用。
4、企業內部網(Intranet)的建設情況和網站的可擴展性。

三、網站技術解決方案
根據網站的功能確定網站技術解決方案。
1、採用自建伺服器,還是租用虛擬主機
2、選擇操作系統,用unix,Linux還是Window2000/NT。分析投入成本、功能、開發、穩定性和安全性等。
3、採用系統性的解決方案(如IBM,HP)等公司提供的企業上網方案、電子商務解決方案?還是自己開發。
4、網站安全性措施,防黑、防病毒方案。
5、相關程序開發。如網頁程序ASP、JSP、CGI、資料庫程序等。

四、網站內容規劃
1、根據網站的目的和功能規劃網站內容,一般企業網站應包括:公司簡介、產品介紹、服務內容、價格信息、聯系方式、網上定單等基本內容。
2、電子商務類網站要提供會員注冊、詳細的商品服務信息、信息搜索查詢、定單確認、付款、個人信息保密措施、相關幫助等。
3、如果網站欄目比較多,則考慮採用網站編程專人負責相關內容。 注意:網站內容是網站吸引瀏覽者最重要的因素,無內容或不實用的信息不會吸引匆匆瀏覽的訪客。可事先對人們希望閱讀的信息進行調查,並在網站發布後調查人們對網站內容的滿意度,以及時調整網站內容。

五、網頁設計
1、網頁設計美術設計要求,網頁美術設計一般要與企業整體形象一致,要符合CI規范。要注意網頁色彩、圖片的應用及版面規劃,保持網頁的整體一致性。
2、在新技術的採用上要考慮主要目標訪問群體的分布地域、年齡階層、網路速度、閱讀習慣等。
3、制定網頁改版計劃,如半年到一年時間進行較大規模改版等。

六、網站維護
1、伺服器及相關軟硬體的維護,對可能出現的問題進行評估,制定響應時間。
2、資料庫維護,有效地利用數據是網站維護的重要內容,因此資料庫的維護要受到重視。
3、內容的更新、調整等。
4、制定相關網站維護的規定,將網站維護制度化、規范化。

七、網站測試
網站發布前要進行細致周密的測試,以保證正常瀏覽和使用。主要測試內容:
1、伺服器穩定性、安全性。
2、程序及資料庫測試。
3、網頁兼容性測試,如瀏覽器、顯示器。
4、根據需要的其他測試。

八、網站發布與推廣
1、網站測試後進行發布的公關,廣告活動。
2、搜索引掣登記等。

九、網站建設日程表
各項規劃任務的開始完成時間,負責人等。

十、費用明細
各項事宜所需費用清單。

以上為網站規劃書中應該體現的主要內容,根據不同的需求和建站目的,內容也會在增加或減少。在建設網站之初一定要進行細致的規劃,才能達到預期建站目的。

7、大型門戶網站怎麼做SEO規劃?

你好,大型門戶網站SEO規劃建議注重網站內部結構,做到扁平化,鏈接結構層次分明,沒有冗餘層級,首頁,項目頁,頻道頁,內容頁,列表頁等各個頁面的內容內鏈要做好,當然具體的方案是要根據網站來寫的。

8、網站訪問量大 怎樣優化mysql資料庫

I 硬體配置優化
CPU選擇:多核的CPU,主頻高的CPU
內存:更大的內存
磁碟選擇:更快的轉速、RAID、陣列卡,
網路環境選擇:盡量部署在區域網、SCI、光纜、千兆網、雙網線提供冗餘、0.0.0.0多埠綁定監聽

II 操作系統級優化
使用64位的操作系統,更好的使用大內存。
設置noatime,nodiratime
[zhangxy@dowload_server1 ~]$ cat /etc/fstab
LABEL=/ / ext3 defaults,noatime,nodiratime 1 1
/dev/sda5 /data xfs defaults,noatime,nodiratime 1 2

9、c# .net mvc網站技術做大型的門戶網站,是否有利於搜索引擎優化,

mvc做網站肯定是會有利於搜索引擎優化的,因為傳統的asp.net會用到很多的伺服器控制項,會在發布之後的隱藏域裡面產生很多多餘的代碼,這對搜索引擎的爬蟲瀏覽頁面信息很不利。
mvc的目的之一就是要把asp.net生成的頁面還原至最傳統的Html控制項和表單提交,不會生成類似的代碼,就比較利於搜索引擎優化了。
不過搜索引擎優化,跟很多其他的因素是有關系的,比如頁面的標題,關鍵字描述,頁面信息更新頻率,是否有高pv值的外聯等。所以關於搜索引擎優化,主要其實不在於你選擇什麼技術來做,搜索引擎優化有句流行的話叫做「內容為王」。
而且個人認為,mvc其實比較利於做一般的展示型網站和信息管理系統,如果選擇做大型的門戶網站的話是值得商榷的。

10、如何為大型網站提速頁面靜態化緩存技術memcachemysql優化

這個需要在程序裡面進行靜態化

與大型門戶網站mysql優化技術相關的知識