SQLite、MySQL、PostgreSQL關(guān)系型數(shù)據(jù)庫管理系統(tǒng)比較_第1頁
SQLite、MySQL、PostgreSQL關(guān)系型數(shù)據(jù)庫管理系統(tǒng)比較_第2頁
SQLite、MySQL、PostgreSQL關(guān)系型數(shù)據(jù)庫管理系統(tǒng)比較_第3頁
SQLite、MySQL、PostgreSQL關(guān)系型數(shù)據(jù)庫管理系統(tǒng)比較_第4頁
SQLite、MySQL、PostgreSQL關(guān)系型數(shù)據(jù)庫管理系統(tǒng)比較_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

SQLite、MySQL、PostgreSQL關(guān)系型數(shù)據(jù)庫管理系統(tǒng)比較一、本文概述在信息技術(shù)快速發(fā)展的今天,關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)已成為數(shù)據(jù)存儲和管理的核心組件。SQLite、MySQL和PostgreSQL是三種廣受歡迎且功能強(qiáng)大的RDBMS。每種數(shù)據(jù)庫都有其獨(dú)特的特點(diǎn)和適用場景,本文旨在對比分析這三種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),以便讀者更好地理解它們的優(yōu)缺點(diǎn),并根據(jù)實(shí)際需求選擇合適的數(shù)據(jù)庫。本文將首先簡要介紹SQLite、MySQL和PostgreSQL的基本情況,包括它們的起源、發(fā)展歷程和主要特點(diǎn)。隨后,我們將從性能、可擴(kuò)展性、安全性、事務(wù)處理、SQL支持、存儲引擎、復(fù)制和集群、備份與恢復(fù)、生態(tài)系統(tǒng)和社區(qū)支持等多個(gè)方面對這三種數(shù)據(jù)庫進(jìn)行詳細(xì)比較。我們還將提供一些實(shí)際的應(yīng)用案例,以幫助讀者更好地理解這些數(shù)據(jù)庫在實(shí)際場景中的應(yīng)用。通過本文的閱讀,讀者將能夠全面了解SQLite、MySQL和PostgreSQL的異同點(diǎn),并根據(jù)自己的業(yè)務(wù)需求選擇合適的數(shù)據(jù)庫系統(tǒng)。本文也希望能為數(shù)據(jù)庫管理員、開發(fā)人員和信息技術(shù)從業(yè)者提供有益的參考和指導(dǎo)。二、介紹與特點(diǎn)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)是現(xiàn)代數(shù)據(jù)處理的核心組成部分,它們?yōu)閿?shù)據(jù)存儲、檢索和管理提供了強(qiáng)大的工具。在眾多的RDBMS中,SQLite、MySQL和PostgreSQL因其各自的特點(diǎn)和廣泛應(yīng)用而備受關(guān)注。SQLite是一個(gè)輕量級的數(shù)據(jù)庫,特別適用于小型項(xiàng)目或嵌入式系統(tǒng)。它不需要單獨(dú)的服務(wù)器進(jìn)程或系統(tǒng)配置,整個(gè)數(shù)據(jù)庫存儲在一個(gè)單一的文件中,這使得它非常適合移動應(yīng)用、桌面軟件或其他需要簡單、快速數(shù)據(jù)訪問的場合。SQLite的另一個(gè)顯著特點(diǎn)是其事務(wù)的完整性和并發(fā)性,確保了數(shù)據(jù)的一致性和可靠性。MySQL是目前最流行的開源關(guān)系型數(shù)據(jù)庫之一。它的特點(diǎn)是性能穩(wěn)定、易于使用,并且支持大規(guī)模的數(shù)據(jù)存儲和處理。MySQL的靈活性使得它既可以作為小型項(xiàng)目的后端數(shù)據(jù)庫,也可以作為大型企業(yè)的核心數(shù)據(jù)存儲解決方案。MySQL與多種編程語言和框架的兼容性,也使其成為Web開發(fā)的理想選擇。PostgreSQL是一個(gè)功能強(qiáng)大的開源關(guān)系型數(shù)據(jù)庫,以其高級功能和可擴(kuò)展性而著稱。它支持復(fù)雜的查詢、存儲過程和觸發(fā)器,提供了豐富的數(shù)據(jù)類型和強(qiáng)大的事務(wù)管理。PostgreSQL還以其優(yōu)秀的并發(fā)性能和穩(wěn)定性而聞名,適用于需要高性能、高可靠性的企業(yè)級應(yīng)用。PostgreSQL對標(biāo)準(zhǔn)SQL的嚴(yán)格遵循和強(qiáng)大的擴(kuò)展性,使得它在數(shù)據(jù)處理和分析領(lǐng)域具有廣泛的應(yīng)用。SQLite、MySQL和PostgreSQL各有其特點(diǎn)和適用場景。SQLite適合輕量級和嵌入式應(yīng)用;MySQL因其易用性和穩(wěn)定性成為Web開發(fā)的首選;而PostgreSQL則以其高級功能和可擴(kuò)展性在復(fù)雜數(shù)據(jù)處理和分析領(lǐng)域占有一席之地。選擇哪種數(shù)據(jù)庫取決于項(xiàng)目的具體需求和環(huán)境。三、介紹與特點(diǎn)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)是現(xiàn)代信息系統(tǒng)的核心組件,它們存儲、管理和保護(hù)著大量的結(jié)構(gòu)化數(shù)據(jù)。SQLite、MySQL和PostgreSQL是三種廣受歡迎的關(guān)系型數(shù)據(jù)庫,各自具有獨(dú)特的優(yōu)勢和適用場景。SQLite是一款輕量級的關(guān)系型數(shù)據(jù)庫,以C語言編寫,不需要獨(dú)立的服務(wù)器進(jìn)程或系統(tǒng)配置。SQLite最大的特點(diǎn)是其無服務(wù)器架構(gòu),這意味著數(shù)據(jù)庫文件本身就是一個(gè)獨(dú)立的磁盤文件,可以方便地集成到應(yīng)用程序中。SQLite特別適用于桌面應(yīng)用程序、移動設(shè)備應(yīng)用和一些嵌入式系統(tǒng)。雖然其功能和性能上可能不及大型數(shù)據(jù)庫系統(tǒng),但在處理小型項(xiàng)目和需要快速部署的場景中,SQLite的高效和便捷性無與倫比。MySQL是由瑞典MySQLAB公司開發(fā)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),目前是Oracle公司的一部分。MySQL以其強(qiáng)大的功能和穩(wěn)定的性能著稱,支持多線程、事務(wù)處理、外鍵等高級功能。由于其開放源代碼和廣泛的社區(qū)支持,MySQL成為了許多Web應(yīng)用程序的首選數(shù)據(jù)庫,如WordPress、Drupal等。MySQL的易用性和靈活性使得它成為了中小型企業(yè)和開發(fā)者社區(qū)的熱門選擇。PostgreSQL(通常簡稱為PG)是一個(gè)功能強(qiáng)大的開源對象-關(guān)系型數(shù)據(jù)庫系統(tǒng),以其卓越的擴(kuò)展性和穩(wěn)定性受到贊譽(yù)。PostgreSQL支持許多先進(jìn)的功能,如外鍵、事務(wù)、子查詢、觸發(fā)器、視圖、存儲過程和自定義函數(shù)等。PostgreSQL還提供了豐富的數(shù)據(jù)類型和強(qiáng)大的查詢優(yōu)化器,使得在處理復(fù)雜查詢和大規(guī)模數(shù)據(jù)時(shí)表現(xiàn)出色。由于其強(qiáng)大的性能和靈活的擴(kuò)展性,PostgreSQL廣泛應(yīng)用于各種場景,從簡單的個(gè)人項(xiàng)目到復(fù)雜的企業(yè)級應(yīng)用。SQLite、MySQL和PostgreSQL各具特色,適用于不同的應(yīng)用場景。在選擇關(guān)系型數(shù)據(jù)庫時(shí),需要根據(jù)項(xiàng)目的具體需求、系統(tǒng)的性能要求以及團(tuán)隊(duì)的技術(shù)背景進(jìn)行綜合考慮。四、介紹與特點(diǎn)SQLite、MySQL和PostgreSQL都是流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),它們在許多方面有著共同之處,同時(shí)也各自具備獨(dú)特的特點(diǎn)和優(yōu)勢。SQLite是一個(gè)輕量級的數(shù)據(jù)庫,它的主要特點(diǎn)是無需獨(dú)立的服務(wù)器進(jìn)程或操作系統(tǒng)級配置。SQLite將完整的數(shù)據(jù)庫存儲在一個(gè)單一的文件中,這使得它在嵌入式系統(tǒng)、桌面應(yīng)用程序和移動應(yīng)用中非常受歡迎。由于其輕量級和易于部署的特性,SQLite成為了許多開發(fā)者的首選數(shù)據(jù)庫。MySQL是一個(gè)開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典公司MySQLAB開發(fā)。它支持多種操作系統(tǒng),包括Linux、Windows、macOS等。MySQL以其高性能、穩(wěn)定性和易用性而著稱。MySQL擁有一個(gè)龐大的用戶社區(qū)和豐富的第三方工具,這使得它在Web開發(fā)、電子商務(wù)、數(shù)據(jù)倉庫等領(lǐng)域得到廣泛應(yīng)用。PostgreSQL(也被稱為“Postgres”)是一個(gè)強(qiáng)大的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),以其高度的可擴(kuò)展性、穩(wěn)定性和豐富的功能而著名。它支持ACID事務(wù)、外鍵、子查詢、觸發(fā)器、視圖等高級功能,并且擁有一個(gè)活躍的社區(qū)和豐富的擴(kuò)展生態(tài)系統(tǒng)。PostgreSQL在大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)等領(lǐng)域得到了廣泛應(yīng)用??偨Y(jié)來說,SQLite適合輕量級、嵌入式和移動應(yīng)用,MySQL在Web開發(fā)、電子商務(wù)等領(lǐng)域具有廣泛應(yīng)用,而PostgreSQL則以其強(qiáng)大的功能和可擴(kuò)展性在大數(shù)據(jù)和云計(jì)算等領(lǐng)域脫穎而出。選擇哪種數(shù)據(jù)庫系統(tǒng)取決于具體的應(yīng)用場景和需求。五、技術(shù)性能比較在關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)中,SQLite、MySQL和PostgreSQL各自在技術(shù)性能上展現(xiàn)出不同的優(yōu)勢和特點(diǎn)。以下是這三個(gè)數(shù)據(jù)庫在技術(shù)性能上的一些比較。SQLite是一個(gè)輕量級的數(shù)據(jù)庫,非常適合嵌入式應(yīng)用和小型項(xiàng)目。它不需要單獨(dú)的服務(wù)器進(jìn)程,因此在啟動和配置方面非??焖俸秃唵巍QLite在處理小型數(shù)據(jù)集時(shí)表現(xiàn)出色,但在處理大型數(shù)據(jù)集和高并發(fā)訪問時(shí)可能會遇到性能瓶頸。MySQL是一個(gè)廣泛使用的開源數(shù)據(jù)庫管理系統(tǒng),它在處理大型數(shù)據(jù)集和高并發(fā)訪問方面表現(xiàn)出色。MySQL支持多種存儲引擎,可以根據(jù)不同的使用場景進(jìn)行選擇和優(yōu)化。MySQL還提供了豐富的查詢優(yōu)化工具和性能監(jiān)控功能,有助于開發(fā)人員提高數(shù)據(jù)庫性能。PostgreSQL是一個(gè)功能強(qiáng)大的開源數(shù)據(jù)庫管理系統(tǒng),以其穩(wěn)定性、可靠性和可擴(kuò)展性而聞名。它支持復(fù)雜的查詢和事務(wù)處理,適合用于大型和復(fù)雜的數(shù)據(jù)庫應(yīng)用。PostgreSQL在處理復(fù)雜查詢和大量數(shù)據(jù)方面表現(xiàn)優(yōu)秀,同時(shí)還提供了豐富的擴(kuò)展和自定義功能。在性能方面,MySQL和PostgreSQL通常比SQLite更適合處理大型數(shù)據(jù)集和高并發(fā)訪問。這是因?yàn)樗鼈兙哂懈鼜?qiáng)大的服務(wù)器架構(gòu)和更多的優(yōu)化工具。SQLite在輕量級應(yīng)用和小型項(xiàng)目中具有優(yōu)勢,因?yàn)樗恍枰~外的服務(wù)器進(jìn)程和配置??傮w來說,在選擇關(guān)系型數(shù)據(jù)庫管理系統(tǒng)時(shí),需要根據(jù)項(xiàng)目的具體需求進(jìn)行權(quán)衡。對于小型項(xiàng)目或嵌入式應(yīng)用,SQLite可能是一個(gè)合適的選擇。而對于大型和復(fù)雜的數(shù)據(jù)庫應(yīng)用,MySQL和PostgreSQL可能更適合。在做出決策時(shí),還需要考慮其他因素,如成本、易用性、擴(kuò)展性和社區(qū)支持等。六、功能和特性比較SQLite、MySQL和PostgreSQL都是流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它們各自擁有獨(dú)特的功能和特性,使得它們在不同的應(yīng)用場景下各有優(yōu)勢。SQLite以其輕量級和無需配置的特性而聞名。它非常適合在桌面應(yīng)用程序、移動應(yīng)用程序和嵌入式系統(tǒng)中使用。由于SQLite是一個(gè)C庫,因此它可以很容易地集成到各種編程語言中。SQLite支持事務(wù)處理、ACID屬性、SQL標(biāo)準(zhǔn)等核心功能,但其擴(kuò)展性和并發(fā)處理能力相對較弱。MySQL是一個(gè)開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),廣泛應(yīng)用于Web開發(fā)領(lǐng)域。它支持大量的并發(fā)連接,提供了豐富的存儲引擎選擇,如InnoDB、MyISAM等。MySQL提供了強(qiáng)大的查詢優(yōu)化器、索引支持、視圖、觸發(fā)器、存儲過程等高級功能。MySQL還具有良好的可擴(kuò)展性和性能調(diào)優(yōu)能力,適用于中大型應(yīng)用程序。PostgreSQL則以其強(qiáng)大的事務(wù)處理能力、數(shù)據(jù)完整性和高級特性而著稱。它支持外鍵、視圖、存儲過程、觸發(fā)器等高級SQL功能,還提供了表繼承、規(guī)則系統(tǒng)、物化視圖等擴(kuò)展功能。PostgreSQL的并發(fā)處理能力出色,支持高并發(fā)讀寫操作。它還提供了豐富的擴(kuò)展接口,使得開發(fā)者可以根據(jù)需求定制和擴(kuò)展數(shù)據(jù)庫功能。SQLite適合輕量級、無需復(fù)雜配置和集成到應(yīng)用程序中的場景;MySQL適合Web開發(fā)、中大型應(yīng)用程序和需要高性能的場景;而PostgreSQL則適合需要強(qiáng)大事務(wù)處理能力、數(shù)據(jù)完整性和高級特性的場景。在選擇關(guān)系型數(shù)據(jù)庫管理系統(tǒng)時(shí),應(yīng)根據(jù)具體的應(yīng)用需求、性能要求、擴(kuò)展性等因素來綜合考慮。七、使用和維護(hù)比較SQLite、MySQL和PostgreSQL在使用和維護(hù)方面各有其特點(diǎn)和優(yōu)勢。SQLite:SQLite以其輕量級和無需服務(wù)器配置的特性,使得它在小型項(xiàng)目、桌面應(yīng)用、移動應(yīng)用或嵌入式系統(tǒng)中廣受歡迎。由于它是文件系統(tǒng)上的一個(gè)數(shù)據(jù)庫,備份、遷移和恢復(fù)通常比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫要簡單得多。由于其局限性,對于大型或復(fù)雜的項(xiàng)目,SQLite可能不是最佳選擇。MySQL:MySQL是最流行的開源關(guān)系型數(shù)據(jù)庫之一,擁有龐大的用戶群體和豐富的社區(qū)支持。它提供了大量的工具和資源,使得安裝、配置、備份、恢復(fù)和優(yōu)化都相對容易。MySQL的性能和可靠性經(jīng)過了許多年的考驗(yàn),對于各種規(guī)模的應(yīng)用都有很好的適應(yīng)性。PostgreSQL:PostgreSQL以其強(qiáng)大的功能和穩(wěn)定性而著稱。它提供了豐富的數(shù)據(jù)類型、強(qiáng)大的查詢優(yōu)化器和高級功能,如復(fù)制、分區(qū)和全文搜索。雖然它的學(xué)習(xí)曲線可能比其他數(shù)據(jù)庫陡峭一些,但一旦熟悉,它的強(qiáng)大功能會帶來很大的優(yōu)勢。PostgreSQL也有很好的文檔和社區(qū)支持。對于小型項(xiàng)目或需要輕量級解決方案的場景,SQLite可能是最好的選擇。對于中型到大型項(xiàng)目,MySQL和PostgreSQL都是很好的選擇,具體取決于項(xiàng)目的具體需求和團(tuán)隊(duì)的熟悉程度。在選擇數(shù)據(jù)庫時(shí),還需要考慮其他因素,如成本、可擴(kuò)展性、兼容性等。八、適用場景比較在選擇關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)時(shí),考慮其適用場景至關(guān)重要。SQLite、MySQL和PostgreSQL各自在不同的使用場景下都有其獨(dú)特的優(yōu)勢。SQLite是一個(gè)輕量級的數(shù)據(jù)庫,非常適合于嵌入式系統(tǒng)和桌面應(yīng)用程序。由于其不需要單獨(dú)的服務(wù)器進(jìn)程或配置,SQLite通常用于那些需要數(shù)據(jù)庫功能但又不想增加額外復(fù)雜性的項(xiàng)目。SQLite的ACID事務(wù)支持和零配置特性使其成為一個(gè)優(yōu)秀的選擇,尤其是在需要數(shù)據(jù)庫持久性但又受限于資源(如內(nèi)存或磁盤空間)的場景下。MySQL則是一個(gè)廣泛使用的開源關(guān)系型數(shù)據(jù)庫,特別適合于Web應(yīng)用程序。其高可靠性和可擴(kuò)展性使得MySQL能夠處理大量并發(fā)連接和數(shù)據(jù)吞吐量。MySQL的易用性和豐富的插件生態(tài)系統(tǒng)也使其成為了許多開發(fā)者的首選。無論是小型網(wǎng)站還是大型分布式系統(tǒng),MySQL都能夠提供穩(wěn)定、可靠的數(shù)據(jù)存儲服務(wù)。PostgreSQL則以其強(qiáng)大的功能和靈活性而聞名。它支持復(fù)雜的查詢、外鍵、觸發(fā)器和存儲過程等高級功能,這使得PostgreSQL成為了一個(gè)適合大型項(xiàng)目的選擇。PostgreSQL還提供了豐富的擴(kuò)展和自定義選項(xiàng),允許用戶根據(jù)具體需求定制數(shù)據(jù)庫系統(tǒng)。對于那些需要高級數(shù)據(jù)完整性、復(fù)雜查詢和擴(kuò)展性的應(yīng)用,PostgreSQL是一個(gè)理想的選擇。SQLite、MySQL和PostgreSQL在不同的使用場景下都有其獨(dú)特的優(yōu)勢。在選擇RDBMS時(shí),應(yīng)根據(jù)項(xiàng)目需求、資源限制和技術(shù)棧來做出合適的決策。九、結(jié)論在比較SQLite、MySQL和PostgreSQL這三種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)后,我們可以得出以下幾點(diǎn)結(jié)論。SQLite以其輕量級和無需服務(wù)器配置的特性,非常適合于小型項(xiàng)目、桌面應(yīng)用程序和嵌入式系統(tǒng)。由于其內(nèi)存占用小,處理速度快,且不需要額外的數(shù)據(jù)庫服務(wù)器,SQLite成為了許多開發(fā)者在需要快速原型設(shè)計(jì)和簡單數(shù)據(jù)存儲時(shí)的首選。MySQL作為一種成熟、穩(wěn)定且廣泛使用的數(shù)據(jù)庫系統(tǒng),適合中型到大型的應(yīng)用程序。MySQL的社區(qū)活躍,擁有大量的第三方工具和插件,使得數(shù)據(jù)庫管理、優(yōu)化和擴(kuò)展變得更為容易。MySQL對PHP等流行語言的支持良好,是許多Web應(yīng)用的理想選擇。PostgreSQL憑借其強(qiáng)大的功能集、高級的擴(kuò)展性和嚴(yán)格的ACID事務(wù)處理特性,成為大型企業(yè)級應(yīng)用的首選。PostgreSQL支持大量的數(shù)據(jù)類型,包括數(shù)組、JSON和地理空間數(shù)據(jù)等,使得它非常適合于復(fù)雜的數(shù)據(jù)處理和分析。PostgreSQL的開源性質(zhì)意味著它可以根據(jù)特定的需求進(jìn)行定制和擴(kuò)展。SQLite、MySQL和PostgreSQL各有其優(yōu)勢和適用場景。開發(fā)者在選擇數(shù)據(jù)庫系統(tǒng)時(shí),應(yīng)根據(jù)項(xiàng)目的規(guī)模、需求以及對性能、可擴(kuò)展性、安全性和易用性的要求來進(jìn)行綜合考慮。不同的數(shù)據(jù)庫系統(tǒng)都有其獨(dú)特的優(yōu)點(diǎn),選擇最適合自己的數(shù)據(jù)庫系統(tǒng)是確保項(xiàng)目成功的重要一環(huán)。十、附錄附錄A:SQLite、MySQL、PostgreSQL的技術(shù)規(guī)格和限制數(shù)據(jù)類型:SQLite支持的數(shù)據(jù)類型包括NULL、INTEGER、REAL、TET、BLOB,以及一個(gè)特殊的類型DATETIME。數(shù)據(jù)庫大?。豪碚撋?,SQLite可以處理高達(dá)1TB的數(shù)據(jù)庫,但實(shí)際使用中可能受到文件系統(tǒng)和硬件的限制。并發(fā)性:SQLite使用文件系統(tǒng)鎖來實(shí)現(xiàn)并發(fā)控制,這可能在高并發(fā)環(huán)境下成為瓶頸。數(shù)據(jù)類型:MySQL支持豐富的數(shù)據(jù)類型,包括字符串類型、數(shù)值類型、日期和時(shí)間類型等。數(shù)據(jù)庫大小:MySQL的數(shù)據(jù)庫大小限制取決于文件系統(tǒng)的限制,但在實(shí)際使用中,往往受到硬件、存儲引擎和配置的影響。并發(fā)性:MySQL支持多線程并發(fā)訪問,通過鎖機(jī)制實(shí)現(xiàn)并發(fā)控制。數(shù)據(jù)類型:PostgreSQL支持的數(shù)據(jù)類型非常豐富,包括標(biāo)量類型、復(fù)合類型、枚舉類型、幾何類型等。數(shù)據(jù)庫大?。篜ostgreSQL的數(shù)據(jù)庫大小理論上可以達(dá)到32TB,但實(shí)際使用中可能受到硬件和配置的限制。并發(fā)性:PostgreSQL支持多版本并發(fā)控制(MVCC),能夠處理高并發(fā)的讀寫操作。附錄B:SQLite、MySQL、PostgreSQL的適用場景Web應(yīng)用:MySQL是許多Web應(yīng)用的默認(rèn)數(shù)據(jù)庫,特別是與PHP、Python、Java等語言結(jié)合使用時(shí)。中型到大型應(yīng)用:MySQL的穩(wěn)定性和性能使其成為中型到大型應(yīng)用的理想選擇。需要復(fù)雜數(shù)據(jù)類型和查詢的應(yīng)用:PostgreSQL的豐富數(shù)據(jù)類型和強(qiáng)大的查詢功能使其成為數(shù)據(jù)密集型應(yīng)用的理想選擇。需要高并發(fā)、高可用的應(yīng)用:PostgreSQL支持多版本并發(fā)控制和復(fù)制功能,適用于需要高并發(fā)、高可用的應(yīng)用。SQLite官方文檔:/docs.htmlMySQL官方文檔:/doc/PostgreSQL官方文檔:/docs/數(shù)據(jù)庫系統(tǒng)概論(王珊、薩師煊著):一本系統(tǒng)介紹關(guān)系型數(shù)據(jù)庫原理的教材。數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)(王珊、薩師煊著):一本深入講解數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)的教材。由于軟件和硬件技術(shù)的快速發(fā)展,上述信息可能會過時(shí)。在實(shí)際應(yīng)用中,請參考最新的官方文檔和相關(guān)資源。參考資料:隨著信息化時(shí)代的到來,關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)已成為企業(yè)和組織中不可或缺的一部分。SQLite、MySQL和PostgreSQL是三種被廣泛使用的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。本文將從多個(gè)方面對這三種數(shù)據(jù)庫進(jìn)行比較,以便為使用者提供合適的選擇。SQLite是一種輕量級的關(guān)系型數(shù)據(jù)庫,無需單獨(dú)的數(shù)據(jù)庫服務(wù)器進(jìn)程,可直接嵌入到應(yīng)用程序中。它具有高度的便攜性和可靠性,廣泛用于移動應(yīng)用、桌面程序和嵌入式系統(tǒng)中。MySQL是由瑞典公司MySQLAB開發(fā)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),具有強(qiáng)大的性能和高度可擴(kuò)展性。它廣泛應(yīng)用于Web開發(fā),與許多編程語言(如PHP、Python等)配合無間。PostgreSQL是一種對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng),支持大部分SQL標(biāo)準(zhǔn),并具有強(qiáng)大的事務(wù)處理功能。它被廣泛應(yīng)用于電子商務(wù)、金融和政府領(lǐng)域。在性能方面,MySQL通常表現(xiàn)出色,尤其是在讀取操作方面。SQLite的性能通常也相當(dāng)不錯(cuò),但在處理大量數(shù)據(jù)時(shí)可能略遜一籌。PostgreSQL在性能方面也很出色,但在某些高并發(fā)場景下可能不如MySQL穩(wěn)定。MySQL和PostgreSQL都支持多用戶并發(fā)訪問和事務(wù)處理,具有良好的擴(kuò)展性。SQLite由于是單進(jìn)程數(shù)據(jù)庫,在處理大量并發(fā)訪問和事務(wù)時(shí)可能會遇到性能瓶頸。SQLite的易用性較好,提供了易于使用的API接口,可以在多種編程語言中使用。MySQL和PostgreSQL也提供了豐富的API接口,但在某些復(fù)雜操作和功能上可能更加復(fù)雜。MySQL和PostgreSQL都提供了完善的數(shù)據(jù)安全保障,包括加密、權(quán)限管理等。SQLite也提供了加密功能,但整體上在數(shù)據(jù)安全方面可能不如前兩者強(qiáng)大。MySQL擁有龐大的開發(fā)者社區(qū)和生態(tài)系統(tǒng),因此在使用過程中遇到問題時(shí)更容易找到解決方案。PostgreSQL的社區(qū)支持也很強(qiáng)大,而SQLite的社區(qū)相對較小,但在某些特定領(lǐng)域和場景下仍然具有一定的優(yōu)勢。SQLite、MySQL和PostgreSQL各具特點(diǎn),適用于不同的應(yīng)用場景。SQLite適用于嵌入式系統(tǒng)和需要輕量級解決方案的場景;MySQL適用于Web開發(fā)和性能要求較高的場景;而PostgreSQL則適用于對數(shù)據(jù)完整性、安全性要求較高的場景。在實(shí)際使用過程中,根據(jù)應(yīng)用需求和實(shí)際情況選擇最合適的數(shù)據(jù)庫是非常重要的。MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQLAB公司開發(fā),屬于Oracle旗下產(chǎn)品。MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在WEB應(yīng)用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一。MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫內(nèi),這樣就增加了速度并提高了靈活性。MySQL所使用的SQL語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型和大型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。與其他的大型數(shù)據(jù)庫例如Oracle、DBSQLServer等相比,MySQL自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個(gè)人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。Linux作為操作系統(tǒng),Apache或Nginx作為Web服務(wù)器,MySQL作為數(shù)據(jù)庫,PHP/Perl/Python作為服務(wù)器端腳本解釋器。由于這四個(gè)軟件都是免費(fèi)或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以建立起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng),被業(yè)界稱為“LAMP“或“LNMP”組合。1.MySQL使用C和C++編寫,并使用了多種編譯器進(jìn)行測試,保證了源代碼的可移植性。2.支持AI、FreeBSD、HP-U、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多種操作系統(tǒng)。3.為多種編程語言提供了API。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和Tcl等。6.既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫而嵌入到其他的軟件中。7.提供多語言支持,常見的編碼如中文的GB2BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。8.提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。14.MySQL對PHP有很好的支持,PHP是比較流行的Web開發(fā)語言。15.MySQL是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的MySQL系統(tǒng)。16.在線DDL/更改功能,數(shù)據(jù)架構(gòu)支持動態(tài)應(yīng)用程序和開發(fā)人員靈活性(6新增)MyISAMMySQL0之前的默認(rèn)數(shù)據(jù)庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務(wù)InnoDB事務(wù)型數(shù)據(jù)庫的首選引擎,支持ACID事務(wù),支持行級鎖定,MySQL5起成為默認(rèn)數(shù)據(jù)庫引擎BDB源自BerkeleyDB,事務(wù)型數(shù)據(jù)庫的另一種選擇,支持Commit和Rollback等其他事務(wù)特性Memory所有數(shù)據(jù)置于內(nèi)存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數(shù)據(jù)量成正比的內(nèi)存空間。并且其內(nèi)容會在MySQL重新啟動時(shí)丟失Merge將一定數(shù)量的MyISAM表聯(lián)合而成一個(gè)整體,在超大規(guī)模數(shù)據(jù)存儲時(shí)很有用Archive非常適合存儲大量的獨(dú)立的,作為歷史記錄的數(shù)據(jù)。因?yàn)樗鼈儾唤?jīng)常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差Federated將不同的MySQL服務(wù)器聯(lián)合起來,邏輯上組成一個(gè)完整的數(shù)據(jù)庫。非常適合分布式應(yīng)用Cluster/NDB高冗余的存儲引擎,用多臺數(shù)據(jù)機(jī)器聯(lián)合提供服務(wù)以提高整體性能和安全性。適合數(shù)據(jù)量大,安全和性能要求高的應(yīng)用CSV:邏輯上由逗號分割數(shù)據(jù)的存儲引擎。它會在數(shù)據(jù)庫子目錄里為每個(gè)數(shù)據(jù)表創(chuàng)建一個(gè).csv文件。這是一種普通文本文件,每個(gè)數(shù)據(jù)行占用一個(gè)文本行。CSV存儲引擎不支持索引。BlackHole:黑洞引擎,寫入的任何數(shù)據(jù)都會消失,一般用于記錄binlog做復(fù)制的中繼EAMPLE存儲引擎是一個(gè)不做任何事情的存根引擎。它的目的是作為MySQL源代碼中的一個(gè)例子,用來演示如何開始編寫一個(gè)新存儲引擎。同樣,它的主要興趣是對開發(fā)者。EAMPLE存儲引擎不支持編索引。MySQL的存儲引擎接口定義良好。有興趣的開發(fā)者可以通過閱讀文檔編寫自己的存儲引擎。索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個(gè)組成部分),它們包含著對數(shù)據(jù)表里所有記錄的引用指針。索引不是萬能的,索引可以加快數(shù)據(jù)檢索操作,但會使數(shù)據(jù)修改操作變慢。每修改數(shù)據(jù)記錄,索引就必須刷新一次。為了在某種程度上彌補(bǔ)這一缺陷,許多SQL命令都有一個(gè)DELAY_KEY_WRITE項(xiàng)。這個(gè)選項(xiàng)的作用是暫時(shí)制止MySQL在該命令每插入一條新記錄和每修改一條現(xiàn)有之后立刻對索引進(jìn)行刷新,對索引的刷新將等到全部記錄插入/修改完畢之后再進(jìn)行。在需要把許多新記錄插入某個(gè)數(shù)據(jù)表的場合,DELAY_KEY_WRITE選項(xiàng)的作用將非常明顯。索引還會在硬盤上占用相當(dāng)大的空間。因此應(yīng)該只為最經(jīng)常查詢和最經(jīng)常排序的數(shù)據(jù)列建立索引。注意,如果某個(gè)數(shù)據(jù)列包含許多重復(fù)的內(nèi)容,為它建立索引就沒有太大的實(shí)際效果。從理論上講,完全可以為數(shù)據(jù)表里的每個(gè)字段分別建一個(gè)索引,但MySQL把同一個(gè)數(shù)據(jù)表里的索引總數(shù)限制為16個(gè)。與InnoDB數(shù)據(jù)表相比,在InnoDB數(shù)據(jù)表上,索引對InnoDB數(shù)據(jù)表的重要性要大得多。在InnoDB數(shù)據(jù)表上,索引不僅會在搜索數(shù)據(jù)記錄時(shí)發(fā)揮作用,還是數(shù)據(jù)行級鎖定機(jī)制的基礎(chǔ)?!皵?shù)據(jù)行級鎖定”的意思是指在事務(wù)操作的執(zhí)行過程中鎖定正在被處理的個(gè)別記錄,不讓其他用戶進(jìn)行訪問。這種鎖定將影響到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。出于效率方面的考慮,InnoDB數(shù)據(jù)表的數(shù)據(jù)行級鎖定實(shí)際發(fā)生在它們的索引上,而不是數(shù)據(jù)表自身上。顯然,數(shù)據(jù)行級鎖定機(jī)制只有在有關(guān)的數(shù)據(jù)表有一個(gè)合適的索引可供鎖定的時(shí)候才能發(fā)揮效力。如果WHERE子句的查詢條件里有不等號(WHEREcoloum!=),MySQL將無法使用索引。類似地,如果WHERE子句的查詢條件里使用了函數(shù)(WHEREDAY(column)=),MySQL也將無法使用索引。在JOIN操作中(需要從多個(gè)數(shù)據(jù)表提取數(shù)據(jù)時(shí)),MySQL只有在主鍵和外鍵的數(shù)據(jù)類型相同時(shí)才能使用索引。如果WHERE子句的查詢條件里使用比較操作符LIKE和REGEP,MySQL只有在搜索模板的第一個(gè)字符不是通配符的情況下才能使用索引。比如說,如果查詢條件是LIKE'abc%‘,MySQL將使用索引;如果查詢條件是LIKE'%abc’,MySQL將不使用索引。在ORDERBY操作中,MySQL只有在排序條件不是一個(gè)查詢條件表達(dá)式的情況下才使用索引。(雖然如此,在涉及多個(gè)數(shù)據(jù)表查詢里,即使有索引可用,那些索引在加快ORDERBY方面也沒什么作用)。如果某個(gè)數(shù)據(jù)列里包含許多重復(fù)的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個(gè)數(shù)據(jù)列里包含的凈是些諸如“0/1”或“Y/N”等值,就沒有必要為它創(chuàng)建一個(gè)索引。普通索引(由關(guān)鍵字KEY或INDE定義的索引)的任務(wù)是加快對數(shù)據(jù)的訪問速度。應(yīng)該只為那些最經(jīng)常出現(xiàn)查詢條件(WHEREcolumn=)或排序條件(ORDERBYcolumn)中的數(shù)據(jù)列創(chuàng)建索引。只要有可能,就應(yīng)該選擇一個(gè)數(shù)據(jù)最整齊、最緊湊的數(shù)據(jù)列(如一個(gè)整數(shù)類型的數(shù)據(jù)列)來創(chuàng)建索引。普通索引允許被索引的數(shù)據(jù)列包含重復(fù)的值。比如說,因?yàn)槿擞锌赡芡?,所以同一個(gè)姓名在同一個(gè)“員工個(gè)人資料”數(shù)據(jù)表里可能出現(xiàn)兩次或更多次。如果能確定某個(gè)數(shù)據(jù)列將只包含彼此各不相同的值,在為這個(gè)數(shù)據(jù)列創(chuàng)建索引的時(shí)候就應(yīng)該用關(guān)鍵字UNIQUE把它定義為一個(gè)索引。這么做的好處:一是簡化了MySQL對這個(gè)索引的管理工作,這個(gè)索引也因此而變得更有效率;二是MySQL會在有新記錄插入數(shù)據(jù)表時(shí),自動檢查新記錄的這個(gè)字段的值是否已經(jīng)在某個(gè)記錄的這個(gè)字段里出現(xiàn)過了;如果是,MySQL將拒絕插入那條新記錄。也就是說,索引可以保證數(shù)據(jù)記錄的獨(dú)特性。事實(shí)上,在許多場合,人們創(chuàng)建索引的目的往往不是為了提高訪問速度,而只是為了避免數(shù)據(jù)出現(xiàn)重復(fù)。在前面已經(jīng)反復(fù)多次強(qiáng)調(diào)過:必須為主鍵字段創(chuàng)建一個(gè)索引,這個(gè)索引就是所謂的“主索引”。主索引區(qū)別是:前者在定義時(shí)使用的關(guān)鍵字是PRIMARY而不是UNIQUE。如果為某個(gè)外鍵字段定義了一個(gè)外鍵約束條件,MySQL就會定義一個(gè)內(nèi)部索引來幫助自己以最有效率的方式去管理和使用外鍵約束條件。索引可以覆蓋多個(gè)數(shù)據(jù)列,如像INDE(columnA,columnB)索引。這種索引的特點(diǎn)是MySQL可以有選擇地使用一個(gè)這樣的索引。如果查詢操作只需要用到columnA數(shù)據(jù)列上的一個(gè)索引,就可以使用復(fù)合索引INDE(columnA,columnB)。這種用法僅適用于在復(fù)合索引中排列在前的數(shù)據(jù)列組合。比如說,INDE(A,B,C)可以當(dāng)做A或(A,B)的索引來使用,但不能當(dāng)做B、C或(B,C)的索引來使用。在為CHAR和VARCHAR類型的數(shù)據(jù)列定義索引時(shí),可以把索引的長度限制為一個(gè)給定的字符個(gè)數(shù)(這個(gè)數(shù)字必須小于這個(gè)字段所允許的最大字符個(gè)數(shù))。這么做的好處是可以生成一個(gè)尺寸比較小、檢索速度卻比較快的索引文件。在絕大多數(shù)應(yīng)用里,數(shù)據(jù)庫中的字符串?dāng)?shù)據(jù)大都以各種各樣的名字為主,把索引的長度設(shè)置為10~15個(gè)字符已經(jīng)足以把搜索范圍縮小到很少的幾條數(shù)據(jù)記錄了。在為BLOB和TET類型的數(shù)據(jù)列創(chuàng)建索引時(shí),必須對索引的長度做出限制;MySQL所允許的最大索引全文索引文本字段上的普通索引只能加快對出現(xiàn)字段內(nèi)容最前面的字符串(也就是字段內(nèi)容開頭的字符)進(jìn)行檢索操作。如果字段里存放的是由幾個(gè)、甚至是多個(gè)單詞構(gòu)成的較大段文字,普通索引就沒什么作用了。這種檢索往往以的形式出現(xiàn),這對MySQL來說很復(fù)雜,如果需要處理的數(shù)據(jù)量很大,響應(yīng)時(shí)間就會很長。這類場合正是全文索引(full-textindex)可以大顯身手的地方。在生成這種類型的索引時(shí),MySQL將把在文本中出現(xiàn)的所有單詞創(chuàng)建為一份清單,查詢操作將根據(jù)這份清單去檢索有關(guān)的數(shù)據(jù)記錄。全文索引即可以隨數(shù)據(jù)表一同創(chuàng)建,也可以等日后有必要時(shí)再使用下面這條命令添加:ALTERTABLEtablenameADDFULLTET(column1,column2)有了全文索引,就可以用SELECT查詢命令去檢索那些包含著一個(gè)或多個(gè)給定單詞的數(shù)據(jù)記錄了。下面是這類查詢命令的基本語法:WHEREMATCH(column1,column2)AGAINST('word1','word2','word3')上面這條命令將把column1和column2字段里有wordword2和word3的數(shù)據(jù)記錄全部查詢出來。只有當(dāng)數(shù)據(jù)庫里已經(jīng)有了足夠多的測試數(shù)據(jù)時(shí),它的性能測試結(jié)果才有實(shí)際參考價(jià)值。如果在測試數(shù)據(jù)庫里只有幾百條數(shù)據(jù)記錄,它們往往在執(zhí)行完第一條查詢命令之后就被全部加載到內(nèi)存里,這將使后續(xù)的查詢命令都執(zhí)行得非???-不管有沒有使用索引。只有當(dāng)數(shù)據(jù)庫里的記錄超過了1000條、數(shù)據(jù)總量也超過了MySQL服務(wù)器上的內(nèi)存總量時(shí),數(shù)據(jù)庫的性能測試結(jié)果才有意義。在不確定應(yīng)該在哪些數(shù)據(jù)列上創(chuàng)建索引的時(shí)候,人們從EPLAINSELECT命令那里往往可以獲得一些幫助。這其實(shí)只是簡單地給一條普通的SELECT命令加一個(gè)EPLAIN關(guān)鍵字作為前綴而已。有了這個(gè)關(guān)鍵字,MySQL將不是去執(zhí)行那條SELECT命令,而是去對它進(jìn)行分析。MySQL將以表格的形式把查詢的執(zhí)行過程和用到的索引等信息列出來。在EPLAIN命令的輸出結(jié)果里,第1列是從數(shù)據(jù)庫讀取的數(shù)據(jù)表的名字,它們按被讀取的先后順序排列。type列指定了本數(shù)據(jù)表與其它數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系(JOIN)。在各種類型的關(guān)聯(lián)關(guān)系當(dāng)中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:對應(yīng)于上一級數(shù)據(jù)表里的每一條記錄,這個(gè)數(shù)據(jù)表里的所有記錄都必須被讀取一遍——這種情況往往可以用一索引來避免)。possible_keys數(shù)據(jù)列給出了MySQL在搜索數(shù)據(jù)記錄時(shí)可選用的各個(gè)索引。key數(shù)據(jù)列是MySQL實(shí)際選用的索引,這個(gè)索引按字節(jié)計(jì)算的長度在key_len數(shù)據(jù)列里給出。比如說,對于一個(gè)INTEGER數(shù)據(jù)列的索引,這個(gè)字節(jié)長度將是4。如果用到了復(fù)合索引,在key_len數(shù)據(jù)列里還可以看到MySQL具體使用了它的哪些部分。作為一般規(guī)律,key_len數(shù)據(jù)列里的值越小越好。ref數(shù)據(jù)列給出了關(guān)聯(lián)關(guān)系中另一個(gè)數(shù)據(jù)表里的數(shù)據(jù)列的名字。row數(shù)據(jù)列是MySQL在執(zhí)行這個(gè)查詢時(shí)預(yù)計(jì)會從這個(gè)數(shù)據(jù)表里讀出的數(shù)據(jù)行的個(gè)數(shù)。row數(shù)據(jù)列里的所有數(shù)字的乘積可以大致了解這個(gè)查詢需要處理多少組合。extra數(shù)據(jù)列提供了與JOIN操作有關(guān)的更多信息,比如說,如果MySQL在執(zhí)行這個(gè)查詢時(shí)必須創(chuàng)建一個(gè)臨時(shí)數(shù)據(jù)表,就會在extra列看到usingtemporary字樣。打開下載的mysql安裝文件mysql-27-winzip,雙擊解壓縮,運(yùn)行“setup.exe”選擇安裝類型,有“Typical(默認(rèn))”、“Complete(完全)”、“Custom(用戶自定義)”三個(gè)選項(xiàng),我們選擇“Custom”,有更多的選項(xiàng),也方便熟悉安裝過程:在“DeveloperComponents(開發(fā)者部分)”上左鍵單擊,選擇“Thisfeature,andallsubfeatures,willbeinstalledonlocalharddrive.”,即“此部分,及下屬子部分內(nèi)容,全部安裝在本地硬盤上”。在上面的“MySQLServer(mysql服務(wù)器)”、“ClientPrograms(mysql客戶端程序)”、“Documentation(文檔)”也如此操作,以保證安裝所有文件。點(diǎn)選“Change...”,手動指定安裝目錄。填上安裝目錄,我的是“F:\Server\MySQL\MySQLServer0”,也建議不要放在與操作系統(tǒng)同一分區(qū),這樣可以防止系統(tǒng)備份還原的時(shí)候,數(shù)據(jù)被清空。按“OK”繼續(xù)。確認(rèn)一下先前的設(shè)置,如果有誤,按“Back”返回重做。按“Install”開始安裝。這里是詢問你是否要注冊一個(gè)賬號,或是使用已有的賬號直接登陸,一般不需要了,點(diǎn)選“SkipSign-Up”,按“Next”略過此步驟。軟件安裝完成后,出現(xiàn)上面的界面,這里有一個(gè)很好的功能,mysql配置向?qū)?,不用像以前一樣,自己手動亂七八糟的配置my.ini了,將“ConfiguretheMysqlServernow”前面的勾打上,點(diǎn)“Finish”結(jié)束軟件的安裝并啟動mysql配置向?qū)?。選擇配置方式,“DetailedConfiguration(手動精確配置)”、“StandardConfiguration(標(biāo)準(zhǔn)配置)”,我們選擇“DetailedConfiguration”,方便熟悉配置過程。選擇服務(wù)器類型,“DeveloperMachine(開發(fā)測試類,mysql占用很少資源)”、“ServerMachine(服務(wù)器類型,mysql占用較多資源)”、“DedicatedMySQLServerMachine(專門的數(shù)據(jù)庫服務(wù)器,mysql占用所有可用資源)”,大家根據(jù)自己的類型選擇了,一般選“ServerMachine”,不會太少,也不會占滿。選擇mysql數(shù)據(jù)庫的大致用途,“MultifunctionalDatabase(通用多功能型,好)”、“TransactionalDatabaseOnly(服務(wù)器類型,專注于事務(wù)處理,一般)”、“Non-TransactionalDatabaseOnly(非事務(wù)處理型,較簡單,主要做一些監(jiān)控、記數(shù)用,對MyISAM數(shù)據(jù)類型的支持僅限于non-transactional),隨自己的用途而選擇了,我這里選擇“TransactionalDatabaseOnly”,按“Next”繼續(xù)。對InnoDBTablespace進(jìn)行配置,就是為InnoDB數(shù)據(jù)庫文件選擇一個(gè)存儲空間,如果修改了,要記住位置,重裝的時(shí)候要選擇一樣的地方,否則可能會造成數(shù)據(jù)庫損壞,對數(shù)據(jù)庫做個(gè)備份就沒問題了,這里不詳述。我這里沒有修改,使用用默認(rèn)位置,直接按“Next”繼續(xù)選擇您的網(wǎng)站的一般mysql訪問量,同時(shí)連接的數(shù)目,“DecisionSupport(DSS)/OLAP(20個(gè)左右)”、“OnlineTransactionProcessing(OLTP)(500個(gè)左右)”、“ManualSetting(手動設(shè)置,自己輸一個(gè)數(shù))”,我這里選“OnlineTransactionProcessing(OLTP)”,自己的服務(wù)器,應(yīng)該夠用了,按“Next”繼續(xù)是否啟用TCP/IP連接,設(shè)定端口,如果不啟用,就只能在自己的機(jī)器上訪問mysql數(shù)據(jù)庫了,我這里啟用,把前面的勾打上,PortNumber:3306,在這個(gè)頁面上,您還可以選擇“啟用標(biāo)準(zhǔn)模式”(EnableStrictMode),這樣MySQL就不會允許細(xì)小的語法錯(cuò)誤。如果您還是個(gè)新手,我建議您取消標(biāo)準(zhǔn)模式以減少麻煩。但熟悉MySQL以后,盡量使用標(biāo)準(zhǔn)模式,因?yàn)樗梢越档陀泻?shù)據(jù)進(jìn)入數(shù)據(jù)庫的可能性。按“Next”繼續(xù)西文編碼,第二個(gè)是多字節(jié)的通用utf8編碼,都不是我們通用的編碼,這里選擇第三個(gè),然后在CharacterSet那里選擇或填入“gbk”,當(dāng)然也可以用“gb2312”,區(qū)別就是gbk的字庫容量大,包括了gb2312的所有漢字,并且加上了繁體字、和其它亂七八糟的字——使用mysql的時(shí)候,在執(zhí)行數(shù)據(jù)操作命令之前運(yùn)行一次“SETNAMESGBK;”(運(yùn)行一次就行了,GBK可以替換為其它值,視這里的設(shè)置而定),就可以正常的使用漢字(或其它文字)了,否則不能正常顯示漢字。按“Next”繼續(xù)。選擇是否將mysql安裝為windows服務(wù),還可以指定ServiceName(服務(wù)標(biāo)識名稱),是否將mysql的bin目錄加入到WindowsPATH(加入后,就可以直接使用bin下的文件,而不用指出目錄名,比如連接,“mysql.exe-uusername-ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我這里全部打上了勾,ServiceName不變。按“Next”繼續(xù)。這一步詢問是否要修改默認(rèn)root用戶(超級管理)的密碼(默認(rèn)為空),“Newrootpassword”如果要修改,就在此填入新密碼(如果是重裝,并且之前已經(jīng)設(shè)置了密碼,在這里更改密碼可能會出錯(cuò),請留空,并將“ModifySecuritySettings”前面的勾去掉,安裝配置完成后另行修改密碼),“Confirm(再輸一遍)”內(nèi)再填一次,防止輸錯(cuò)?!癊nablerootaccessfromremotemachines(是否允許root用戶在其它的機(jī)器上登陸,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“CreateAnAnonymousAccount(新建一個(gè)匿名用戶,匿名用戶可以連接數(shù)據(jù)庫,不能操作數(shù)據(jù),包括查詢)”,一般就不用勾了,設(shè)置完畢,按“Next”繼續(xù)。確認(rèn)設(shè)置無誤,如果有誤,按“Back”返回檢查。按“Execute”使設(shè)置生效。設(shè)置完畢,按“Finish”結(jié)束mysql的安裝與配置——這里有一個(gè)比較常見的錯(cuò)誤,就是不能“Startservice”,一般出現(xiàn)以前有安裝mysql的服務(wù)器上,解決的辦法,先保證以前安裝的mysql服務(wù)器徹底卸載掉了;不行的話,檢查是否按上面一步所說,之前的密碼是否有修改,照上面的操作;如果依然不行,將mysql安裝目錄下的data文件夾備份,然后刪除,在安裝完成后,將安裝生成的data文件夾刪除,備份的data文件夾移回來,再重啟mysql服務(wù)就可以了,這種情況下,可能需要將數(shù)據(jù)庫檢查一下,然后修復(fù)一次,防止數(shù)據(jù)出錯(cuò)。1.如果是用MySQL+Apache,使用的又是FreeBSD網(wǎng)絡(luò)操作系統(tǒng)的話,安裝時(shí)候你應(yīng)按注意到FreeBSD的版本問題,在FreeBSD的0以下版本來說,MySQLSource內(nèi)含的MIT-pthread運(yùn)行是正常的,但在這版本以上,你必須使用nativethreads,也就是加入一個(gè)with-named-thread-libs=-lc_r的選項(xiàng)。2.如果在COMPILE過程中出了問題,請先檢查你的gcc版本是否在81版本以上,gmake版本是否在75以上。3.如果不是版本的問題,那可能是你的內(nèi)存不足,請使用./configure--with-low-memory來加入。4.如果要重新做你的configure,那么你可以鍵入rmconfig.cache和makeclean來清除記錄。5.把MySQL安裝在/usr/local目錄下,這是缺省值,您也可以按照你的需要設(shè)定你所安裝的目錄。查看MySQL的服務(wù)是否存在。如果不存在需要先安裝服務(wù)。安裝服務(wù)的方法是進(jìn)入MySQLServer的安裝目錄,找到bin目錄,然后找到文件mysqld.exe,使用命令行運(yùn)行mysqld--installMySQL57安裝服務(wù)(如果不成功嘗試使用管理員方式運(yùn)行,MySQL57是服務(wù)的名字,默認(rèn)是MySQL)。如果上述方法安裝服務(wù)失敗,則可采用下述方法安裝(成功則跳過此步)。搜索程序“regedit.exe”,即注冊表編輯器,打開后找到“計(jì)算機(jī)”——"HKEY_LOCAL_MACHINE"——“SYSTEM”——“CurrentControlSet”——“Services”,然后在該目錄下新建項(xiàng)MySQL57(服務(wù)的名字)即可成功建立項(xiàng)目。找到新建的項(xiàng),然后可以看到其中有ImagePath這一項(xiàng),這其實(shí)是可執(zhí)行文件的路徑。因?yàn)镸ySQL服務(wù)是需要靠mysqld這個(gè)命令來啟動的,所以檢查下ImagePath的路徑是否正確。路徑錯(cuò)誤導(dǎo)致啟動服務(wù)時(shí)報(bào)錯(cuò)—“無法找到文件”。修改ImagePath的內(nèi)容為正確的路徑值,正確的值是"D:\MySQL\MySQLServer7\bin\mysqld"--defaults-file="D:\MySQL\MySQLServer7\my.ini"MySQL是這種形式的,對照一下,如果路徑不對,修改過來。1.StartingMySQL.Managerofpid-filequitwithoutupdatingfi關(guān)于這個(gè)錯(cuò)誤原因有很多,最大的可能是沒有創(chuàng)建測試數(shù)據(jù)庫,可以用/usr/local/mysql/scripts/mysql_install_db–user=mysql命令進(jìn)行創(chuàng)建;另外一個(gè)原因可能是權(quán)限設(shè)置問題,需要賦予mysql的data權(quán)限,可以用chmod-R命令。2.FATALERROR:Couldnotfind/home/mysql/bin/my_print_defaultsIfyouareusingabinaryrelease,youmustrunthisscriptfromwithinthedirectorythearchiveextractedinto.IfyoucompiledMySQLyourselfyoumustrun‘makeinstall’first.這個(gè)錯(cuò)誤,是沒有指明mysql的data路徑導(dǎo)致的,可以很簡單的進(jìn)行解決:3.-bash:mysql:commandnotfound用mysql命令進(jìn)行登陸mysql報(bào)錯(cuò),原因是沒有設(shè)置環(huán)境變量,需要設(shè)置,或者進(jìn)入到bin目錄進(jìn)行登陸cd/usr/local/mysql/bin4.ERROR1130:Host’3′isnotallowedtoconnecttothisMySQLserver用mysql遠(yuǎn)程工具鏈接數(shù)據(jù)庫報(bào)錯(cuò),這個(gè)錯(cuò)誤原因是沒有開放遠(yuǎn)程鏈接功能,可以在mysql里面輸入如下命令進(jìn)行解決:GRANTALLPRIVILEGESON*.*TO’root‘@’%'IDENTIFIEDBY’password’WITHGRANTOPTION首先在打開DOS窗口,然后進(jìn)入目錄mysqlbin,再鍵入命令mysql-uroot-p,回車后提示你輸密碼,如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進(jìn)入到MySQL中了,MySQL的提示符是:mysql>2.例2:連接到遠(yuǎn)程主機(jī)上的MYSQL。假設(shè)遠(yuǎn)程主機(jī)的IP為:110,用戶名為root,密碼為abcd123。則鍵入以下命令:注意:想要成功連接到遠(yuǎn)程主機(jī),需要在遠(yuǎn)程主機(jī)打開MySQL遠(yuǎn)程訪問權(quán)限mysql>GRANTALLPRIVILEGESON*.*TO'agui'@%'IDENTIFIEDBY'123'WITHGRANTOPTION;即:在遠(yuǎn)程主機(jī)上作好設(shè)置,我們即可通過mysql-h110-uagui-p123連接進(jìn)遠(yuǎn)程主機(jī)格式:mysqladmin-u用戶名-p舊密碼-password新密碼1.例1:給root加個(gè)密碼ab12。首先在DOS下進(jìn)入目錄mysqlbin,然后鍵入以下命令mysqladmin-uroot-passwordab12注:因?yàn)殚_始時(shí)root沒有密碼,所以-p舊密碼一項(xiàng)就可以省略了。mysqladmin-uroot-pab12-passworddjg345(注意:和上面不同,下面的因?yàn)槭荕ySQL環(huán)境中的命令,所以后面都帶一個(gè)分號作為命令結(jié)束符)格式:grantselecton數(shù)據(jù)庫.*to用戶名@登錄主機(jī)identifiedby“密碼”例增加一個(gè)用戶test1密碼為abc,讓他可以在任何主機(jī)上登錄,并對所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入MySQL,然后鍵入以下命令:grantselect,insert,update,deleteon*.*totest1@“%”Identifiedby“abc”;但例1增加的用戶是十分危險(xiǎn)的,你想如某個(gè)人知道test1的密碼,那么他就可以在internet上的任何一臺電腦上登錄你的mysql數(shù)據(jù)庫并對你的數(shù)據(jù)可以為所欲為了,解決辦法見例2。例增加一個(gè)用戶test2密碼為abc,讓他只可以在localhost上登錄,并可以對數(shù)據(jù)庫mydb進(jìn)行查詢、插入、修改、刪除的操作(localhost指本地主機(jī),即MYSQL數(shù)據(jù)庫所在的那臺主機(jī)),這樣用戶即使用知道test2的密碼,他也無法從internet上直接訪問數(shù)據(jù)庫,只能通過MYSQL主機(jī)上的web頁來訪問了。grantselect,insert,update,deleteonmydb.*totest2@localhostidentifiedby“abc”;grantselect,insert,update,deleteonmydb.*totest2@localhostidentifiedby“”;下面來看看MySQL中有關(guān)數(shù)據(jù)庫方面的操作。注意:必須首先登錄到MySQL中,以下操作都是在MySQL的提示符下進(jìn)行的,而且每個(gè)命令以分號結(jié)束。1.如果你打命令時(shí),回車后發(fā)現(xiàn)忘記加分號,你無須重打一遍命令,只要打個(gè)分號回車就可以了。也就是說你可以把一個(gè)完整的命令分成幾行來打,完后用分號作結(jié)束標(biāo)志就OK。2.你可以使用光標(biāo)上下鍵調(diào)出以前的命令。但以前我用過的一個(gè)MySQL舊版本不支持。我用的是mysql-27-beta-win。剛開始時(shí)才兩個(gè)數(shù)據(jù)庫:mysql和test。mysql庫很重要它里面有MySQL的系統(tǒng)信息,我們改密碼和新增用戶,實(shí)際上就是用這個(gè)庫進(jìn)行操作。usemysql;//打開庫,學(xué)過FOBASE的一定不會陌生吧dropdatabaseifexistsschool;//如果存在SCHOOL則刪除createdatabaseschool;//建立庫SCHOOLcreatetableteacher//建立表TEACHERidint(3)auto_incrementnotnullprimarykey,addressvarchar(50)default‘深圳',)ENGINE=InnoDBDEFAULTCHARSET=utf8;//建表結(jié)束insertintoteachervalues('','glchengang',’公司‘,'1976-10-10');insertintoteachervalues('','jack',’公司‘,'1975-12-23');1.將ID設(shè)為長度為3的數(shù)字字段:int(3)并讓它每個(gè)記錄自動加一:auto_increment并不能為空:notnull而且讓他成為主字段primarykey。3.將ADDRESS設(shè)為長度50的字符字段,而且缺省值為深圳。varchar和char有什么區(qū)別呢,只有等以后的文章再說了。如果你在mysql提示符鍵入上面的命令也可以,但不方便調(diào)試。你可以將以上命令原樣寫入一個(gè)文本文件中假設(shè)為school.sql,然后復(fù)制到c:\下,并在DOS狀態(tài)進(jìn)入目錄\mysql\bin,然后鍵入以下命令:mysql-uroot-p密碼<c:\school.sql如果成功,空出一行無任何顯示;如有錯(cuò)誤,會有提示。(以上命令已經(jīng)調(diào)試,你只要將//的注釋去掉即可使用)。1.文本數(shù)據(jù)應(yīng)符合的格式:字段數(shù)據(jù)之間用tab鍵隔開,null值用\n來代替.2.?dāng)?shù)據(jù)傳入命令loaddatalocalinfile“文件名”intotable表名;注意:你最好將文件復(fù)制到\mysql\bin目錄下,并且要先用use命令打開表所在的數(shù)據(jù)庫mysqldump--optschool>school.bbb注釋:將數(shù)據(jù)庫school備份到school.bbb文件,school.bbb是一個(gè)文本文件,文件名任取,打開看看你會有新發(fā)現(xiàn)。先是建立批處理文件,將以下代碼另存為.bat文件,文件名最好為英文。注意下面的路徑,以筆者自己的數(shù)據(jù)庫為例,數(shù)據(jù)庫安裝在D盤下mysql\mysql下,備份位置在F:\beifen,后面的代碼是日期。titlemysql數(shù)據(jù)庫自動備份腳本(任務(wù)計(jì)劃)--腳本作者:http://www。***。comsetsou_dir="D:\mysql\Mysql\data"setobj_dir=F:\beifen\%date:~0,10%@echooff&setlocalenabledelayedexpansionifexistF:\beifen\%D%rd/s/qF:\beifen\%D%還原/導(dǎo)入數(shù)據(jù)庫,導(dǎo)入過程,進(jìn)入mysql數(shù)據(jù)庫控制臺,如mysql-uroot-p然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)如果提示找不到文件,輸完source后,可以用鼠標(biāo)把文件直接拖進(jìn)命令行窗口可以使用命令行工具管理MySQL數(shù)據(jù)庫(命令mysql和mysqladmin),也可以從MySQL的網(wǎng)站下載圖形管理工具M(jìn)ySQLAdministrator,MySQLQueryBrowser和MySQLWorkbench。phpMyAdmin是由php寫成的MySQL資料庫系統(tǒng)管理程程序,讓管理者可用Web界面管理MySQL資料庫。phpMyBackupPro也是由PHP寫成的,可以透過Web界面創(chuàng)建和管理數(shù)據(jù)庫。它可以創(chuàng)建偽cronjobs,可以用來自動在某個(gè)時(shí)間或周期備份MySQL數(shù)據(jù)庫。還有其他的GUI管理工具,例如mysql-front以及emsmysqlmanager,navicat等等。在MySQL數(shù)據(jù)庫中,進(jìn)行中文排序和查找的時(shí)候,對漢字的排序和查找結(jié)果是錯(cuò)誤的。這種情況在MySQL的很多版本中都存在。如果這個(gè)問題不解決,那么MySQL將無法實(shí)際處理中文。出現(xiàn)這個(gè)問題的原因是:MySQL在查詢字符串時(shí)是大小寫不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,因此在比較過程中中文編碼字符大小寫轉(zhuǎn)換造成了這種現(xiàn)象,一種解決方法是對于包含中文的字段加上"binary"屬性,使之作為二進(jìn)制比較,例如將"namechar(10)"改成"namechar(10)binary"。如果你使用源碼編譯MySQL,可以編譯MySQL時(shí)使用--with--charset=gbk參數(shù),這樣MySQL就會直接支持中文查找和排序了。MySQL遵守的不只是GPL協(xié)議,而是雙授權(quán)模式(duallicense)即你在遵守GPL協(xié)議的開源項(xiàng)目使用MySQL,需要遵守GPL協(xié)議方能使用。如果你在非開源項(xiàng)目使用(即軟件不打算開放源代碼),且該軟件用來銷售,則需要向MySQL支付相應(yīng)license費(fèi)用。在31版本時(shí)人們發(fā)現(xiàn)Oracle取消了其中的GPL協(xié)議,造成了一定的不安。有開發(fā)者在MySQL程序臭蟲網(wǎng)站上舉報(bào)這項(xiàng)授權(quán)錯(cuò)誤問題,隨即MySQL工程服務(wù)總監(jiān)YngveSvendsen在網(wǎng)站上坦言,這的確是一個(gè)文件臭蟲,因?yàn)閙an手冊程序重新編譯時(shí)套用了錯(cuò)誤的授權(quán)內(nèi)容。不過仍然有人認(rèn)為,Oracle取消開源授權(quán)改采商業(yè)授權(quán)的“這一天遲早是要到來的”,并尋求其他代替方案。按Next,然后選擇安裝方式,有"Typical(默認(rèn))"、"Complete(完全)"、"Custom(用戶自定義)",選擇第二個(gè)選項(xiàng)"Custom",下一步,MySQLServer(mysql服務(wù)器),DeveloperComponents(開發(fā)者部分),DebugSymbols(調(diào)試符號),Serverdatafiles(服務(wù)器數(shù)據(jù)文件)默認(rèn);改變安裝路徑;原路徑是"C:\ProgramFiles\MySQL\MySQLServer5\",也可以修改為:"E:\ProgramFiles\MySQLServer5\"。下一步,安裝,會彈出窗口,點(diǎn)下一步,再點(diǎn)下一步,選擇"LaunchtheMySqlinstanceConfigurationWizard",意思是啟動MySQL實(shí)例配置向?qū)?再點(diǎn)擊Finish,再點(diǎn)下一步,DetailedConfiguration(詳細(xì)配置)和StandardConfiguration(標(biāo)準(zhǔn)配置),選擇詳細(xì)配置,下一步;選擇服務(wù)器類型,"DeveloperMachine(開發(fā)測試類,mysql占用很少資源)"、"ServerMachine(服務(wù)器類型,mysql占用較多資源)"、"DedicatedMySQLServerMachine(專門的數(shù)據(jù)庫服務(wù)器,mysql占用所有可用資源)",根據(jù)自己的類型選擇,測試軟件選"DeveloperMachine",服務(wù)器選"ServerMachine",下一步;選擇創(chuàng)建MySQL表時(shí)使用的表處理器,"MultifunctionalDatabase"(通用多功能型,好,同時(shí)使用InnoDB和MyISAM儲存引擎)、"TransactionalDatabaseOnly"(服務(wù)器類型,專注于事務(wù)處理,主要使用InnoDB只偶爾使用MyISAM,一般)、"Non-TransactionalDatabaseOnly"(非事務(wù)處理型,較簡單,完全禁用InnoDB儲存引擎,將所有服務(wù)器資源指派給MyISAM儲存引擎),隨自己的用途而選擇。隨著MySQL被Oracle收購,MySQL的用戶和開發(fā)者開始質(zhì)疑開源數(shù)據(jù)庫的命運(yùn),與此同時(shí)他們開始尋找替代品。從MySQL轉(zhuǎn)向MariaDB的代表廠家:谷歌(2013年9月)、RedHat(2013年6月)、維基百科(2013年4月)MySQL在2008年被Sun以10億美金所收購,MySQL創(chuàng)始人MichaelWidenius則不滿Sun開發(fā)團(tuán)隊(duì)腳步過慢,憤而離職成立開源數(shù)據(jù)庫聯(lián)盟,另外從現(xiàn)有MySQL程序代碼中,開發(fā)出另一個(gè)延伸分支版本,也就是名為瑪莉亞數(shù)據(jù)庫的企業(yè)級開源數(shù)據(jù)庫?,斃騺啍?shù)據(jù)庫如同MySQL的影子版本,瑪莉亞數(shù)據(jù)庫是MySQL的一個(gè)分支版本(branch),而不是衍生版本(folk),提供的功能可和MySQL完全兼容。從MySQL轉(zhuǎn)向PostgreSQL的代表廠家:蘋果(2011年)PostgreSQL是一個(gè)自由的對象-關(guān)系數(shù)據(jù)庫服務(wù)器(數(shù)據(jù)庫管理系統(tǒng))。PostgreSQL支持大部分SQL標(biāo)準(zhǔn)并且提供了許多其它現(xiàn)代特性:復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、MVCC。同樣,PostgreSQL可以用許多方法擴(kuò)展,比如,通過增加新的數(shù)據(jù)類型、函數(shù)、操作符、聚集函數(shù)、索引方法、過程語言。并且,因?yàn)樵S可證的靈活,任何人都可以以任何目的免費(fèi)使用、修改、和分發(fā)PostgreSQL,不管是私用、商用、還是學(xué)術(shù)研究使用。PostgreSQL也受NoSQL思想的啟發(fā),希望能夠在今后可以給使用者更多可定制可調(diào)節(jié)的功能(不是說這個(gè)成熟的關(guān)系型數(shù)據(jù)庫系統(tǒng)要向NoSQL轉(zhuǎn)變)。NoSQL(NoSQL=NotOnlySQL),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動。NoSQL指的是非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付web0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。其代表的開源軟件如:Membase、MongoDB、Hypertable、ApacheCassandra、CouchDB等。修改"mysql"數(shù)據(jù)庫里的"user"表里的"host"項(xiàng),將"localhost"改成"%"mysql>updateusersethost='%'whereuser='root';mysql>selecthost,userfromuser;2:使用myuser/mypassword從任何主機(jī)連接到mysql服務(wù)器:GRANTALLPRIVILEGESON*.*TO'myuser'@'%'IDENTIFIEDBY'mypassword'WITHGRANTOPTION;使用myuser/mypassword從ip為166的主機(jī)連接到mysql服務(wù)器:GRANTALLPRIVILEGESON*.*TO'myuser'@'166'IDENTIFIEDBY'mypassword'WITHGRANTOPTION;mysql>GRANTALLPRIVILEGESON*.*TO'root'@'%'WITHGRANTOPTION;//賦予任何主機(jī)上以root身份訪問數(shù)據(jù)的權(quán)限性能:MySQL0的速度要比MySQL7快2倍。MySQL0在以下方面帶來了更好的性能:讀/寫工作負(fù)載、IO密集型工作負(fù)載、以及高競爭("hotspot"熱點(diǎn)競爭問題)工作負(fù)載。NoSQL:MySQL從7版本開始提供NoSQL存儲功能,在0版本中這部分功能也得到了更大的改進(jìn)。該項(xiàng)功能消除了對獨(dú)立的NoSQL文檔數(shù)據(jù)庫的需求,而MySQL文檔存儲也為schema-less模式的JSON文檔提供了多文檔事務(wù)支持和完整的ACID合規(guī)性。窗口函數(shù)(WindowFunctions):從MySQL0開始,新增了一個(gè)叫窗口函數(shù)的概念,它可以用來實(shí)現(xiàn)若干新的查詢方式。窗口函數(shù)與SUM()、COUNT()這種集合函數(shù)類似,但它不會將多行查詢結(jié)果合并為一行,而是將結(jié)果放回多行當(dāng)中。即窗口函數(shù)不需要GROUPBY。隱藏索引:在MySQL0中,索引可以被“隱藏”和“顯示”。當(dāng)對索引進(jìn)行隱藏時(shí),它不會被查詢優(yōu)化器所使用。我們可以使用這個(gè)特性用于性能調(diào)試,例如我們先隱藏一個(gè)索引,然后觀察其對數(shù)據(jù)庫的影響。如果數(shù)據(jù)庫性能有所下降,說明這個(gè)索引是有用的,然后將其“恢復(fù)顯示”即可;如果數(shù)據(jù)庫性能看不出變化,說明這個(gè)索引是多余的,可以考慮刪掉。降序索引:MySQL0為索引提供按降序方式進(jìn)行排序的支持,在這種索引中的值也會按降序的方式進(jìn)行排序。通用表表達(dá)式(CommonTableExpressionsCTE):在復(fù)雜的查詢中使用嵌入式表時(shí),使用CTE使得查詢語句更清晰。UTF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論