Mysql性能在Linux/Unix上性能都較為優(yōu)異,主要和IO可能有莫大的關(guān)系。還有一點就是windows它需要花費大部分的cpu時間在UI上,而linux則很安靜!
創(chuàng)新互聯(lián)專業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專業(yè)提供成都服務(wù)器托管,服務(wù)器租用,眉山服務(wù)器托管,眉山服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。
1) 功能強大
MySQL 中提供了多種數(shù)據(jù)庫存儲引擎,各引擎各有所長,適用于不同的應(yīng)用場合,用戶可以選擇最合適的引擎以得到最高性能,可以處理每天訪問量超過數(shù)億的高強度的搜索 Web 站點。MySQL5 支持事務(wù)、視圖、存儲過程、觸發(fā)器等。
2) 支持跨平臺
MySQL 支持至少 20 種以上的開發(fā)平臺,包括 Linux、Windows、FreeBSD 、IBMAIX、AIX、FreeBSD 等。這使得在任何平臺下編寫的程序都可以進行移植,而不需要對程序做任何的修改。
3) 運行速度快
高速是 MySQL 的顯著特性。在 MySQL 中,使用了極快的 B 樹磁盤表(MyISAM)和索引壓縮;通過使用優(yōu)化的單掃描多連接,能夠極快地實現(xiàn)連接;SQL 函數(shù)使用高度優(yōu)化的類庫實現(xiàn),運行速度極快。
4) 支持面向?qū)ο?/p>
PHP 支持混合編程方式。編程方式可分為純粹面向?qū)ο?、純粹面向過程、面句對象與面向過程混合 3 種方式。
5) 安全性高
靈活和安全的權(quán)限與密碼系統(tǒng),允許基本主機的驗證。連接到服務(wù)器時,所有的密碼傳輸均采用加密形式,從而保證了密碼的安全。
6) 成本低
MySQL 數(shù)據(jù)庫是一種完全免費的產(chǎn)品,用戶可以直接通過網(wǎng)絡(luò)下載。
7) 支持各種開發(fā)語言
MySQL 為各種流行的程序設(shè)計語言提供支持,為它們提供了很多的 API 函數(shù),包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 語言等。
8) 數(shù)據(jù)庫存儲容量大
MySQL 數(shù)據(jù)庫的最大有效表尺寸通常是由操作系統(tǒng)對文件大小的限制決定的,而不是由 MySQL 內(nèi)部限制決定的。InnoDB 存儲引擎將 InnoDB 表保存在一個表空間內(nèi),該表空間可由數(shù)個文件創(chuàng)建,表空間的最大容量為 64TB,可以輕松處理擁有上千萬條記錄的大型數(shù)據(jù)庫。
9) 支持強大的內(nèi)置函數(shù)
PHP 中提供了大量內(nèi)置函數(shù),幾乎涵蓋了 Web 應(yīng)用開發(fā)中的所有功能。它內(nèi)置了數(shù)據(jù)庫連接、文件上傳等功能,MySQL 支持大量的擴展庫,如 MySQLi 等,可以為快速開發(fā) Web 應(yīng)用提供便利。
索引對查詢的速度有著至關(guān)重要的影響,理解索引也是進行數(shù)據(jù)庫性能調(diào)優(yōu)的起點??紤]如下情況,假設(shè)數(shù)據(jù)庫中一個表有10^6條記錄,DBMS的頁面大小為4K,并存儲100條記錄。如果沒有索引,查詢將對整個表進行掃描,最壞的情況下,如果所有數(shù)據(jù)頁都不在內(nèi)存,需要讀取10^4個頁面,如果這10^4個頁面在磁盤上隨機分布,需要進行10^4次I/O,假設(shè)磁盤每次I/O時間為10ms(忽略數(shù)據(jù)傳輸時間),則總共需要100s(但實際上要好很多很多)。如果對之建立B-Tree索引,則只需要進行l(wèi)og100(10^6)=3次頁面讀取,最壞情況下耗時30ms。這就是索引帶來的效果,很多時候,當你的應(yīng)用程序進行SQL查詢速度很慢時,應(yīng)該想想是否可以建索引。
摘自
MySQL支持全文索引和搜索功能。在MySQL中可以在CHAR、VARCHAR或TEXT列使用FULLTETXT來創(chuàng)建全文索引。
FULLTEXT索引主要用MATCH()...AGAINST語法來實現(xiàn)搜索:
MySQL的全文搜索存在以下局限:
通常來說MySQL自帶的全文搜索使用起來局限性比較大,性能和功能都不太成熟,主要適用于小項目,大項目還是建議使用elasticsearch來做全文搜索。
ElasticSearch是一個分布式的開源搜索和分析引擎,適用于所有類型的數(shù)據(jù),包括文本、數(shù)字、地理空間、結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),以下簡稱ES。
Elasticsearch 在 Apache Lucene 的基礎(chǔ)上開發(fā)而成,Elasticsearch 以其簡單的 REST 風格 API、分布式特性、速度和可擴展性而聞名,是 Elastic Stack 的核心組件。Elastic Stack 是適用于數(shù)據(jù)采集、充實、存儲、分析和可視化的一組開源工具。
Elasticsearch 的實現(xiàn)原理主要分為以下幾個步驟,首先用戶將數(shù)據(jù)提交到Elasticsearch 數(shù)據(jù)中心,再通過分詞控制器去將對應(yīng)的數(shù)據(jù)分詞,將其權(quán)重和分詞結(jié)果一并存入數(shù)據(jù),當用戶搜索數(shù)據(jù)時候,再根據(jù)權(quán)重將結(jié)果排名,打分,再將返回結(jié)果呈現(xiàn)給用戶。
由于ES是基于RESTfull Web接口的,因此我們直接按照慣例傳遞JSON參數(shù)調(diào)用接口即可實現(xiàn)增刪改查,并且不需要我們做額外的管理操作就可以直接索引文檔,ES已經(jīng)內(nèi)置了所有的缺省操作,可以自動幫我們定義類型。
再次執(zhí)行PUT,會對庫中已有的id為1的數(shù)據(jù)進行覆蓋,每修改一次_version字段的版本號就會加1。
默認搜索會返回前10個結(jié)果:
返回的幾個關(guān)鍵詞:
查詢字符串搜索,可以像傳遞URL參數(shù)一樣傳遞查詢語句。
精確查詢:
全文搜索:
以上兩種方法都需要考慮數(shù)據(jù)更改后如何與ES進行同步。