當前位置:首頁 » 編程語言 » 支持sql的查詢引擎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

支持sql的查詢引擎

發布時間: 2022-05-20 20:36:13

① 基於Hadoop的sql引擎怎麼挑

SQL語言
支持的SQL語言越多,能使用的應用程序也就越多。並且,支持的語言越豐富,Hadoop能運行的查詢程序就越多,應用和報表工具要做的就越少。
節點連接
在大表上快速有效地執行節點連接並不容易,尤其是在SQL引擎不知道數據存儲在哪的情況下。效率低下的連接過程會導致大量的I/O,以及不同節點之間巨大的數據傳輸,最終影響處理速度。
非結構化數據
SQL是為結構化數據設計的。表中的每一條記錄都位於同一列,每一列都有同樣的屬性。但在大數據時代,並不是所有的數據都是結構化的。Hadoop文件中可能包含嵌套的數據、可變的數據(具有層級結構)、無模式的數據和自我描述的數據。基於Hadoop的SQL引擎必須能夠把所有數據都轉換為關系數據,並優化這些數據之間的查詢。

② 目前哪些NoSQL資料庫應用廣泛,各有什麼特點

特點:
它們可以處理超大量的數據。

它們運行在便宜的PC伺服器集群上。

PC集群擴充起來非常方便並且成本很低,避免了「sharding」操作的復雜性和成本。

它們擊碎了性能瓶頸。
NoSQL的支持者稱,通過NoSQL架構可以省去將Web或Java應用和數據轉換成SQL友好格式的時間,執行速度變得更快。
「SQL並非適用於所有的程序代碼,」 對於那些繁重的重復操作的數據,SQL值得花錢。但是當資料庫結構非常簡單時,SQL可能沒有太大用處。

沒有過多的操作。
雖然NoSQL的支持者也承認關系資料庫提供了無可比擬的功能集合,而且在數據完整性上也發揮絕對穩定,他們同時也表示,企業的具體需求可能沒有那麼多。

Bootstrap支持
因為NoSQL項目都是開源的,因此它們缺乏供應商提供的正式支持。這一點它們與大多數開源項目一樣,不得不從社區中尋求支持。

優點:
易擴展
NoSQL資料庫種類繁多,但是一個共同的特點都是去掉關系資料庫的關系型特性。數據之間無關系,這樣就非常容易擴展。也無形之間,在架構的層面上帶來了可擴展的能力。

大數據量,高性能
NoSQL資料庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。這得益於它的無關系性,資料庫的結構簡單。一般MySQL使用 Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對web2.0的交互頻繁的應用,Cache性能不高。而NoSQL的 Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要性能高很多了。

靈活的數據模型
NoSQL無需事先為要存儲的數據建立欄位,隨時可以存儲自定義的數據格式。而在關系資料庫里,增刪欄位是一件非常麻煩的事情。如果是非常大數據量的表,增加欄位簡直就是一個噩夢。這點在大數據量的web2.0時代尤其明顯。

高可用
NoSQL在不太影響性能的情況,就可以方便的實現高可用的架構。比如Cassandra,HBase模型,通過復制模型也能實現高可用。

主要應用:
Apache HBase
這個大數據管理平台建立在谷歌強大的BigTable管理引擎基礎上。作為具有開源、Java編碼、分布式多個優勢的資料庫,Hbase最初被設計應用於Hadoop平台,而這一強大的數據管理工具,也被Facebook採用,用於管理消息平台的龐大數據。

Apache Storm
用於處理高速、大型數據流的分布式實時計算系統。Storm為Apache Hadoop添加了可靠的實時數據處理功能,同時還增加了低延遲的儀錶板、安全警報,改進了原有的操作方式,幫助企業更有效率地捕獲商業機會、發展新業務。

Apache Spark
該技術採用內存計算,從多迭代批量處理出發,允許將數據載入內存做反復查詢,此外還融合數據倉庫、流處理和圖計算等多種計算範式,Spark用Scala語言實現,構建在HDFS上,能與Hadoop很好的結合,而且運行速度比MapRece快100倍。

Apache Hadoop
該技術迅速成為了大數據管理標准之一。當它被用來管理大型數據集時,對於復雜的分布式應用,Hadoop體現出了非常好的性能,平台的靈活性使它可以運行在商用硬體系統,它還可以輕松地集成結構化、半結構化和甚至非結構化數據集。

Apache Drill
你有多大的數據集?其實無論你有多大的數據集,Drill都能輕松應對。通過支持HBase、Cassandra和MongoDB,Drill建立了互動式分析平台,允許大規模數據吞吐,而且能很快得出結果。

Apache Sqoop
也許你的數據現在還被鎖定於舊系統中,Sqoop可以幫你解決這個問題。這一平台採用並發連接,可以將數據從關系資料庫系統方便地轉移到Hadoop中,可以自定義數據類型以及元數據傳播的映射。事實上,你還可以將數據(如新的數據)導入到HDFS、Hive和Hbase中。

Apache Giraph
這是功能強大的圖形處理平台,具有很好可擴展性和可用性。該技術已經被Facebook採用,Giraph可以運行在Hadoop環境中,可以將它直接部署到現有的Hadoop系統中。通過這種方式,你可以得到強大的分布式作圖能力,同時還能利用上現有的大數據處理引擎。

Cloudera Impala
Impala模型也可以部署在你現有的Hadoop群集上,監視所有的查詢。該技術和MapRece一樣,具有強大的批處理能力,而且Impala對於實時的SQL查詢也有很好的效果,通過高效的SQL查詢,你可以很快的了解到大數據平台上的數據。

Gephi
它可以用來對信息進行關聯和量化處理,通過為數據創建功能強大的可視化效果,你可以從數據中得到不一樣的洞察力。Gephi已經支持多個圖表類型,而且可以在具有上百萬個節點的大型網路上運行。Gephi具有活躍的用戶社區,Gephi還提供了大量的插件,可以和現有系統完美的集成到一起,它還可以對復雜的IT連接、分布式系統中各個節點、數據流等信息進行可視化分析。

MongoDB
這個堅實的平台一直被很多組織推崇,它在大數據管理上有極好的性能。MongoDB最初是由DoubleClick公司的員工創建,現在該技術已經被廣泛的應用於大數據管理。MongoDB是一個應用開源技術開發的NoSQL資料庫,可以用於在JSON這樣的平台上存儲和處理數據。目前,紐約時報、Craigslist以及眾多企業都採用了MongoDB,幫助他們管理大型數據集。(Couchbase伺服器也作為一個參考)。

十大頂尖公司:
Amazon Web Services
Forrester將AWS稱為「雲霸主」,談到雲計算領域的大數據,那就不得不提到亞馬遜。該公司的Hadoop產品被稱為EMR(Elastic Map Rece),AWS解釋這款產品採用了Hadoop技術來提供大數據管理服務,但它不是純開源Hadoop,經過修改後現在被專門用在AWS雲上。
Forrester稱EMR有很好的市場前景。很多公司基於EMR為客戶提供服務,有一些公司將EMR應用於數據查詢、建模、集成和管理。而且AWS還在創新,Forrester稱未來EMR可以基於工作量的需要自動縮放調整大小。亞馬遜計劃為其產品和服務提供更強大的EMR支持,包括它的RedShift數據倉庫、新公布的Kenesis實時處理引擎以及計劃中的NoSQL資料庫和商業智能工具。不過AWS還沒有自己的Hadoop發行版。
Cloudera
Cloudera有開源Hadoop的發行版,這個發行版採用了Apache Hadoop開源項目的很多技術,不過基於這些技術的發行版也有很大的進步。Cloudera為它的Hadoop發行版開發了很多功能,包括Cloudera管理器,用於管理和監控,以及名為Impala的SQL引擎等。Cloudera的Hadoop發行版基於開源Hadoop,但也不是純開源的產品。當Cloudera的客戶需要Hadoop不具備的某些功能時,Cloudera的工程師們就會實現這些功能,或者找一個擁有這項技術的合作夥伴。Forrester表示:「Cloudera的創新方法忠於核心Hadoop,但因為其可實現快速創新並積極滿足客戶需求,這一點使它不同於其他那些供應商。」目前,Cloudera的平台已經擁有200多個付費客戶,一些客戶在Cloudera的技術支持下已經可以跨1000多個節點實現對PB級數據的有效管理。
Hortonworks
和Cloudera一樣,Hortonworks是一個純粹的Hadoop技術公司。與Cloudera不同的是,Hortonworks堅信開源Hadoop比任何其他供應商的Hadoop發行版都要強大。Hortonworks的目標是建立Hadoop生態圈和Hadoop用戶社區,推進開源項目的發展。Hortonworks平台和開源Hadoop聯系緊密,公司管理人員表示這會給用戶帶來好處,因為它可以防止被供應商套牢(如果Hortonworks的客戶想要離開這個平台,他們可以輕松轉向其他開源平台)。這並不是說Hortonworks完全依賴開源Hadoop技術,而是因為該公司將其所有開發的成果回報給了開源社區,比如Ambari,這個工具就是由Hortonworks開發而成,用來填充集群管理項目漏洞。Hortonworks的方案已經得到了Teradata、Microsoft、Red Hat和SAP這些供應商的支持。
IBM
當企業考慮一些大的IT項目時,很多人首先會想到IBM。IBM是Hadoop項目的主要參與者之一,Forrester稱IBM已有100多個Hadoop部署,它的很多客戶都有PB級的數據。IBM在網格計算、全球數據中心和企業大數據項目實施等眾多領域有著豐富的經驗。「IBM計劃繼續整合SPSS分析、高性能計算、BI工具、數據管理和建模、應對高性能計算的工作負載管理等眾多技術。」
Intel
和AWS類似,英特爾不斷改進和優化Hadoop使其運行在自己的硬體上,具體來說,就是讓Hadoop運行在其至強晶元上,幫助用戶打破Hadoop系統的一些限制,使軟體和硬體結合的更好,英特爾的Hadoop發行版在上述方面做得比較好。Forrester指出英特爾在最近才推出這個產品,所以公司在未來還有很多改進的可能,英特爾和微軟都被認為是Hadoop市場上的潛力股。
MapR Technologies
MapR的Hadoop發行版目前為止也許是最好的了,不過很多人可能都沒有聽說過。Forrester對Hadoop用戶的調查顯示,MapR的評級最高,其發行版在架構和數據處理能力上都獲得了最高分。MapR已將一套特殊功能融入其Hadoop發行版中。例如網路文件系統(NFS)、災難恢復以及高可用性功能。Forrester說MapR在Hadoop市場上沒有Cloudera和Hortonworks那樣的知名度,MapR要成為一個真正的大企業,還需要加強夥伴關系和市場營銷。
Microsoft
微軟在開源軟體問題上一直很低調,但在大數據形勢下,它不得不考慮讓Windows也兼容Hadoop,它還積極投入到開源項目中,以更廣泛地推動Hadoop生態圈的發展。我們可以在微軟的公共雲Windows Azure HDInsight產品中看到其成果。微軟的Hadoop服務基於Hortonworks的發行版,而且是為Azure量身定製的。
微軟也有一些其他的項目,包括名為Polybase的項目,讓Hadoop查詢實現了SQLServer查詢的一些功能。Forrester說:「微軟在資料庫、數據倉庫、雲、OLAP、BI、電子表格(包括PowerPivot)、協作和開發工具市場上有很大優勢,而且微軟擁有龐大的用戶群,但要在Hadoop這個領域成為行業領導者還有很遠的路要走。」
Pivotal Software
EMC和Vmware部分大數據業務分拆組合產生了Pivotal。Pivotal一直努力構建一個性能優越的Hadoop發行版,為此,Pivotal在開源Hadoop的基礎上又添加了一些新的工具,包括一個名為HAWQ的SQL引擎以及一個專門解決大數據問題的Hadoop應用。Forrester稱Pivotal Hadoop平台的優勢在於它整合了Pivotal、EMC、Vmware的眾多技術,Pivotal的真正優勢實際上等於EMC和Vmware兩大公司為其撐腰。到目前為止,Pivotal的用戶還不到100個,而且大多是中小型客戶。
Teradata
對於Teradata來說,Hadoop既是一種威脅也是一種機遇。數據管理,特別是關於SQL和關系資料庫這一領域是Teradata的專長。所以像Hadoop這樣的NoSQL平台崛起可能會威脅到Teradata。相反,Teradata接受了Hadoop,通過與Hortonworks合作,Teradata在Hadoop平台集成了SQL技術,這使Teradata的客戶可以在Hadoop平台上方便地使用存儲在Teradata數據倉庫中的數據。
AMPLab
通過將數據轉變為信息,我們才可以理解世界,而這也正是AMPLab所做的。AMPLab致力於機器學習、數據挖掘、資料庫、信息檢索、自然語言處理和語音識別等多個領域,努力改進對信息包括不透明數據集內信息的甄別技術。除了Spark,開源分布式SQL查詢引擎Shark也源於AMPLab,Shark具有極高的查詢效率,具有良好的兼容性和可擴展性。近幾年的發展使計算機科學進入到全新的時代,而AMPLab為我們設想一個運用大數據、雲計算、通信等各種資源和技術靈活解決難題的方案,以應對越來越復雜的各種難題。

③ 如何選擇基於Hadoop的SQL引擎

在Hadoop和NoSQL技術中,人們逐漸把焦點轉移到了Hadoop上的SQL引擎。今天,可選擇的引擎越來越多,反倒讓組織陷入了選擇困境。本文將羅列幾點選擇引擎時需要考量的因素,供您參考。
基於Hadoop的SQL技術一大優勢在於可以使用熟悉的SQL語言,訪問存儲在Hadoop中的大數據集。
用戶幾乎可以應用任何報表或工具來分析和研究數據。在Hadoop上還不能應用SQL的時候,要訪問Hadoop中的大數據集,需要十分了解Hadoop
的技術應用程序界面,比如HDFS、MapRece或HBase。現在有了基於Hadoop的SQL引擎,每個人都可以使用他喜歡的工具了。對企業而
言,相當於Hadoop開放了更大的窗口,有更多的企業可以應用Hadoop處理大數據。
有哪些技術可以選擇

第一個基於Hadoop的SQL引擎是Apache Hive,不過過去一年裡,有很多新產品出現,包括CitusDB、Cloudera
Impala、Concurrent Lingual、Hadapt、InfiniDB、 JethroData、MammothDB、Apache
Drill、MemSQL、Pivotal HawQ、Progress DataDirect、ScleraDB、Simba和Splice
Machine。
除了上述引擎之外,數據虛擬化伺服器也應在此列,因為它們對Hadoop數據實現了SQL訪問。虛擬化伺服器可以訪問所有數據源,包括Hadoop,不同的數據源都可以集成。數據虛擬化伺服器有很多,包括Cirro Data Hub、Cisco/Composite

當然,還有一些SQL資料庫管理系統也支持多種數據源。它們在自己的SQL資料庫或Hadoop中存儲數據,提供對Hadoop數據的SQL訪問。比如
EMC/Greenplum UAP、 HP Vertica (on MapR)、Microsoft PolyBase、Actian
ParAccel 和Teradata Aster Database (via SQL-H)。
這么多基於Hadoop的SQL工具可以使用,可以說是讓組織眼花繚亂。那麼該如何選擇呢?它們彼此的差別又在哪呢?
事實上,不同的技術之間差別很大,比如說,CitusDB知道數據存儲在哪裡,可以更快地訪問數據;JethroData存儲索引,可以直接訪問數據;Splice Machine提供交易型SQL界面。
要選擇正確的技術,需要比對細節。以下是具體的考慮因素:
SQL語言
支持的SQL語言越多,能使用的應用程序也就越多。並且,支持的語言越豐富,Hadoop能運行的查詢程序就越多,應用和報表工具要做的就越少。
節點連接
在大表上快速有效地執行節點連接並不容易,尤其是在SQL引擎不知道數據存儲在哪的情況下。效率低下的連接過程會導致大量的I/O,以及不同節點之間巨大的數據傳輸,最終影響處理速度。
非結構化數據
SQL是為結構化數據設
計的。表中的每一條記錄都位於同一列,每一列都有同樣的屬性。但在大數據時代,並不是所有的數據都是結構化的。Hadoop文件中可能包含嵌套的數據、可
變的數據(具有層級結構)、無模式的數據和自我描述的數據。基於Hadoop的SQL引擎必須能夠把所有數據都轉換為關系數據,並優化這些數據之間的查
詢。
存儲模式
Hadoop支持一些標准存儲格式,比如Parquet、Avro和ORCFile。基於Hadoop的SQL技術使用的格式越多,其他引擎和技術能夠讀取的格式也就越多。這極大地減少了復制數據的工作。
用戶定義函數
要在SQL上執行復雜的分析函數,比如高斯判別分析和購物籃分析等,很重要的前提是SQL對該函數的支持。這樣的函數被稱為用戶定義函數(UDF)。基於Hadoop的SQL引擎需要能夠在多節點上分部執行用戶定義函數。
多用戶工作負載

還需要考量的一個因素是,引擎應該如何在不同的查詢和不同類型的查詢之間劃分資源。比如,不同應用程序的查詢有不同的處理優先順序;需要運行較長時間的查詢
應該讓位於需要立即處理的查詢;如果計劃外的或資源密集型的查詢佔用很多資源的話,應該被取消或暫停查詢。基於Hadoop的SQL技術需要更加智能的工
作負載管理。
數據聯合
並不是所有的數據都存儲在Hadoop中。大部分企業數據還存儲在其他數據源中,比如SQL資料庫。基於Hadoop的SQL引擎需要支持存儲在不同類型數據源中的數據的連接。換言之,它必須支持數據聯合。
應用Hadoop的企業部署SQL引擎是大勢所趨。企業在選擇不同技術的時候,希望能考慮到上述因素。

④ 關於資料庫對SQL的支持

個人觀點:
SQL是標準的資料庫查詢語言,可以完成絕大部分的資料庫操作。各個廠商還對SQL進行了擴展,例如微軟的Transact
SQL,Oracle的PL/SQL,這樣應該就能夠對資料庫進行幾乎所有的操作。
微軟的說法:Transact-SQL
是使用
SQL
Server
的核心。與
SQL
Server
實例通信的所有應用程序都通過將
Transact-SQL
語句發送到伺服器(不考慮應用程序的用戶界面)來實現這一點。
至於SQL語句的執行,是由資料庫引擎處理的,不是簡單的由哪個dll處理。

⑤ 有關SQL Server 資料庫引擎

1,如果在電腦上安裝有SQL server,那麼SQL Server資料庫引擎是所安裝的SQL下哪個工具呢?是不是企業查詢器呢?

答:企業查詢器是sql server的應用程序,不是資料庫引擎。資料庫引擎從「開始」-》「管理工具」-》「服務」里可以看到,根據 版本不同名稱不同,但基本都帶關鍵字「SQL SERVER」,這個是你所說的引擎。

2,我們用應用程序進行連接SQL,則跟數據引擎有什麼關系?如果有,從哪裡可以看得出來?

答:當然有,這個不是從哪裡看出來。你連基本概念都沒弄清楚,c/s,b/s是什麼??? 那個s(server)就是你應用程序所連接的資料庫引擎。即資料庫引擎提供了資料庫的服務。你連sql,目的就是使用其提供的服務!

3,書裡面的說資料庫引擎里,有什麼默認實例,還有命名實例,但書裡面講得太理論化了,誰能用一個實例表達一下?

答:默認實例????你說的比書上還理論話啊。什麼意思?「實例」這個詞你在這里指什麼?你吧問題搞的太復雜了。

⑥ sql查看錶的數據引擎是innoDB還是MYISAM-CSDN問答

MySQL資料庫有多種存儲引擎:比如:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE等等,最常見的也就是MyISAM和InnoDB了,下面主要講解下MyISAM和InnoDB兩種mysql資料庫存儲引擎的區別。
MyISAM引擎是一種非事務性的引擎,提供高速存儲和檢索,以及全文搜索能力,適合數據倉庫等查詢頻繁的應用。MyISAM中,一個table實際保存為三個文件,.frm存儲表定義,.MYD存儲數據,.MYI存儲索引。MyISAM在所有MySQL配置里被支持,它是默認的存儲引擎,除非你配置MySQL默認使用另外一個引擎。

⑦ 大數據運算的三種引擎是什麼有什麼區別

現在流行的開源引擎可不止三個,先羅列5個給你:
1)Hive,披著SQL外衣的Map-Rece。Hive是為方便用戶使用Map-Rece而在外面封裝了一層SQL,由於Hive採用了SQL,它的問題域比Map-Rece更窄,因為很多問題,SQL表達不出來,比如一些數據挖掘演算法,推薦演算法、圖像識別演算法等,這些仍只能通過編寫Map-Rece完成。
2) Impala:Google Dremel的開源實現(Apache Drill類似),因為互動式實時計算需求,Cloudera推出了Impala系統,該系統適用於互動式實時處理場景,要求最後產生的數據量一定要少。
3)Shark/Spark:為了提高Map-Rece的計算效率,Berkeley的AMPLab實驗室開發了Spark,Spark可看做基於內存的Map-Rece實現,此外,伯克利還在Spark基礎上封裝了一層SQL,產生了一個新的類似Hive的系統Shark。
4) Stinger Initiative(Tez optimized Hive):Hortonworks開源了一個DAG計算框架Tez,Tez可以理解為Google Pregel的開源實現,該框架可以像Map-Rece一樣,可以用來設計DAG應用程序,但需要注意的是,Tez只能運行在YARN上。Tez的一個重要應用是優化Hive和PIG這種典型的DAG應用場景,它通過減少數據讀寫IO,優化DAG流程使得Hive速度提供了很多倍。
5)Presto:FaceBook於2013年11月份開源了Presto,一個分布式SQL查詢引擎,它被設計為用來專門進行高速、實時的數據分析。它支持標準的ANSI SQL,包括復雜查詢、聚合(aggregation)、連接(join)和窗口函數(window functions)。Presto設計了一個簡單的數據存儲的抽象層,來滿足在不同數據存儲系統(包括HBase、HDFS、Scribe等)之上都可以使用SQL進行查詢。

⑧ 如何查看mysql資料庫的引擎

一般情況下,mysql會默認提供多種存儲引擎,你可以通過下面的查看:

看你的mysql現在已提供什麼存儲引擎:
mysql> show engines;

看你的mysql當前默認的存儲引擎:
mysql> show variables like '%storage_engine%';

你要看某個表用了什麼引擎(在顯示結果里參數engine後面的就表示該表當前用的存儲引擎):
mysql> show create table 表名;

MySQL資料庫引擎詳解

作為Java程序員,MySQL資料庫大家平時應該都沒少使用吧,對MySQL資料庫的引擎應該也有所了解,這篇文章就讓我詳細的說說MySQL資料庫的Innodb和MyIASM兩種引擎以及其索引結構。也來鞏固一下自己對這塊知識的掌握。

Innodb引擎

Innodb引擎提供了對資料庫ACID事務的支持,並且實現了SQL標準的四種隔離級別,關於資料庫事務與其隔離級別的內容請見資料庫事務與其隔

離級別這篇文章。該引擎還提供了行級鎖和外鍵約束,它的設計目標是處理大容量資料庫系統,它本身其實就是基於MySQL後台的完整資料庫系統,MySQL
運行時Innodb會在內存中建立緩沖池,用於緩沖數據和索引。但是該引擎不支持FULLTEXT類型的索引,而且它沒有保存表的行數,當SELECT
COUNT(*) FROM
TABLE時需要掃描全表。當需要使用資料庫事務時,該引擎當然是首選。由於鎖的粒度更小,寫操作不會鎖定全表,所以在並發較高時,使用Innodb引擎
會提升效率。但是使用行級鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的范圍,InnoDB表同樣會鎖全表。

MyIASM引擎

MyIASM是MySQL默認的引擎,但是它沒有提供對資料庫事務的支持,也不支持行級鎖和外鍵,因此當INSERT(插入)或UPDATE(更
新)數據時即寫操作需要鎖定整個表,效率便會低一些。不過和Innodb不同,MyIASM中存儲了表的行數,於是SELECT COUNT(*)
FROM
TABLE時只需要直接讀取已經保存好的值而不需要進行全表掃描。如果表的讀操作遠遠多於寫操作且不需要資料庫事務的支持,那麼MyIASM也是很好的選
擇。

兩種引擎的選擇

大尺寸的數據集趨向於選擇InnoDB引擎,因為它支持事務處理和故障恢復。資料庫的大小決定了故障恢復的時間長短,InnoDB可以利用事務日誌

進行數據恢復,這會比較快。主鍵查詢在InnoDB引擎下也會相當快,不過需要注意的是如果主鍵太長也會導致性能問題,關於這個問題我會在下文中講到。大

批的INSERT語句(在每個INSERT語句中寫入多行,批量插入)在MyISAM下會快一些,但是UPDATE語句在InnoDB下則會更快一些,尤
其是在並發量大的時候。

Index——索引

索引(Index)是幫助MySQL高效獲取數據的數據結構。MyIASM和Innodb都使用了樹這種數據結構做為索引,關於樹我也曾經寫過一篇文章樹是一種偉大的數據結構,只是自己的理解,有興趣的朋友可以去閱讀。下面我接著講這兩種引擎使用的索引結構,講到這里,首先應該談一下B-Tree和B+Tree。

B-Tree和B+Tree

B+Tree是B-Tree的變種,那麼我就先講B-Tree吧,相信大家都知道紅黑樹,這是我前段時間學《演算法》一書時,實現的一顆紅黑樹,大家

可以參考。其實紅黑樹類似2,3-查找樹,這種樹既有2叉結點又有3叉結點。B-Tree也與之類似,它的每個結點做多可以有d個分支(叉),d稱為B-

Tree的度,如下圖所示,它的每個結點可以有4個元素,5個分支,於是它的度為5。B-Tree中的元素是有序的,比如圖中元素7左邊的指針指向的結點

中的元素都小於7,而元素7和16之間的指針指向的結點中的元素都處於7和16之間,正是滿足這樣的關系,才能高效的查找:首先從根節點進行二分查找,找
到就返回對應的值,否則就進入相應的區間結點遞歸的查找,直到找到對應的元素或找到null指針,找到null指針則表示查找失敗。這個查找是十分高效
的,其時間復雜度為O(logN)(以d為底,當d很大時,樹的高度就很低),因為每次檢索最多隻需要檢索樹高h個結點。

接下來就該講B+Tree了,它是B-Tree的變種,如下面兩張圖所示:

vcHLx/i85LLp0a/Qp8LKoaM8L3A+DQo8aDMgaWQ9"myisam引擎的索引結構">MyISAM引擎的索引結構

MyISAM引擎的索引結構為B+Tree,其中B+Tree的數據域存儲的內容為實際數據的地址,也就是說它的索引和實際的數據是分開的,只不過是用索引指向了實際的數據,這種索引就是所謂的非聚集索引。

Innodb引擎的索引結構

MyISAM引擎的索引結構同樣也是B+Tree,但是Innodb的索引文件本身就是數據文件,即B+Tree的數據域存儲的就是實際的數據,這種索引就是聚集索引。這個索引的key就是數據表的主鍵,因此InnoDB表數據文件本身就是主索引。

因為InnoDB的數據文件本身要按主鍵聚集,所以InnoDB要求表必須有主鍵(MyISAM可以沒有),如果沒有顯式指定,則MySQL系統會自動選擇一個可以唯一標識數據記錄的列作為主鍵,如果不存在這種列,則MySQL自動為InnoDB表生成一個隱含欄位作為主鍵,這個欄位長度為6個位元組,類型為長整形。

並且和MyISAM不同,InnoDB的輔助索引數據域存儲的也是相應記錄主鍵的值而不是地址,所以當以輔助索引查找時,會先根據輔助索引找到主
鍵,再根據主鍵索引找到實際的數據。所以Innodb不建議使用過長的主鍵,否則會使輔助索引變得過大。建議使用自增的欄位作為主鍵,這樣B+Tree的
每一個結點都會被順序的填滿,而不會頻繁的分裂調整,會有效的提升插入數據的效率。

⑨ sql server 有沒有什麼開源的全文檢索引擎

SQL Server中沒有開源的全文檢索引擎。SQL Server 中的全文搜索為用戶和應用程序提供了對 SQL Server 表中基於字元的數據運行全文查詢的功能。 在可以對某一表運行全文查詢之前,資料庫管理員必須對該表創建全文索引。 全文索引包括表中一個或多個基於字元的列。 這些列可以具有下列任何一種數據類型:char、varchar、nchar、nvarchar、text、ntext、image、xml 或 varbinary(max) 和 FILESTREAM。 每個全文索引都對表中的一個或多個列創建索引,並且每個列都可以使用特定語言。

參考文檔:
https://msdn.microsoft.com/zh-cn/library/ms142571.aspx

⑩ mysql資料庫支持的存儲引擎有哪些默認的存儲引擎是什麼主要特性有什麼

1、MySQL常見的存儲引擎有:InnoDB、MyISAM。

2、Mysql 5.0之後的版本,默認的存儲引擎就是InnoDB。

3、各自主要特點有:

  • 事務:MyISAM不支持,InnoDB支持。

  • 鎖級別: MyISAM 表級鎖,InnoDB 行級鎖及外鍵約束。

  • MyISAM存儲表的總行數;InnoDB不存儲總行數。

  • MyISAM採用非聚集索引,B+樹葉子存儲指向數據文件的指針。InnoDB主鍵索引採用聚集索引,B+樹葉子存儲數據。

  • MyISAM適合場景: 插入不頻繁,查詢非常頻繁,如果執行大量的SELECT,MyISAM是更好的選擇, 沒有事務。

  • InnoDB適合場景: 可靠性要求比較高,或者要求事務; 表更新和查詢都相當的頻繁, 大量的INSERT或UPDATE。