文章編號:11735時間:2024-10-01人氣:
引言
PostgreSQL 9.0 是一款強(qiáng)大且流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),以其可靠性、可擴(kuò)展性和高級功能而聞名。對于任何希望掌握數(shù)據(jù)庫管理和性能優(yōu)化的專業(yè)人士來說,精通 PostgreSQL 9.0 至關(guān)重要。
第 1 部分:數(shù)據(jù)庫管理
第 2 部分:查詢優(yōu)化
第 3 部分:高級功能
第 4 部分:性能監(jiān)視和故障排除
結(jié)論
精通 PostgreSQL 9.0 是提升數(shù)據(jù)庫管理和性能優(yōu)化的關(guān)鍵技能。通過理解本指南中介紹的核心概念和技術(shù),您可以優(yōu)化數(shù)據(jù)庫性能、自動化任務(wù)并確保數(shù)據(jù)庫的高可用性和可靠性。掌握 PostgreSQL 9.0 將為您的職業(yè)道路打開許多機(jī)會,并幫助您在當(dāng)今競爭激烈的 IT 領(lǐng)域脫穎而出。
特性MySQLPostgreSQL實例通過執(zhí)行 MySQL 命令(mysqld)啟動實例。 一個實例可以管理一個或多個數(shù)據(jù)庫。 一臺服務(wù)器可以運(yùn)行多個 mysqld 實例。 一個實例管理器可以監(jiān)視 mysqld 的各個實例。 通過執(zhí)行 Postmaster 進(jìn)程(pg_ctl)啟動實例。 一個實例可以管理一個或多個數(shù)據(jù)庫,這些數(shù)據(jù)庫組成一個集群。 集群是磁盤上的一個區(qū)域,這個區(qū)域在安裝時初始化并由一個目錄組成,所有數(shù)據(jù)都存儲在這個目錄中。 使用 initdb 創(chuàng)建第一個數(shù)據(jù)庫。 一臺機(jī)器上可以啟動多個實例。 數(shù)據(jù)庫數(shù)據(jù)庫是命名的對象集合,是與實例中的其他數(shù)據(jù)庫分離的實體。 一個 MySQL 實例中的所有數(shù)據(jù)庫共享同一個系統(tǒng)編目。 數(shù)據(jù)庫是命名的對象集合,每個數(shù)據(jù)庫是與其他數(shù)據(jù)庫分離的實體。 每個數(shù)據(jù)庫有自己的系統(tǒng)編目,但是所有數(shù)據(jù)庫共享 pg_databases。 數(shù)據(jù)緩沖區(qū)通過 innodb_buffer_pool_size 配置參數(shù)設(shè)置數(shù)據(jù)緩沖區(qū)。 這個參數(shù)是內(nèi)存緩沖區(qū)的字節(jié)數(shù),InnoDB 使用這個緩沖區(qū)來緩存表的數(shù)據(jù)和索引。 在專用的數(shù)據(jù)庫服務(wù)器上,這個參數(shù)最高可以設(shè)置為機(jī)器物理內(nèi)存量的 80%。 Shared_buffers 緩存。 在默認(rèn)情況下分配 64 個緩沖區(qū)。 默認(rèn)的塊大小是 8K。 可以通過設(shè)置 文件中的 shared_buffers 參數(shù)來更新緩沖區(qū)緩存。 數(shù)據(jù)庫連接客戶機(jī)使用 CONNECT 或 USE 語句連接數(shù)據(jù)庫,這時要指定數(shù)據(jù)庫名,還可以指定用戶 id 和密碼。 使用角色管理數(shù)據(jù)庫中的用戶和用戶組。 客戶機(jī)使用 connect 語句連接數(shù)據(jù)庫,這時要指定數(shù)據(jù)庫名,還可以指定用戶 id 和密碼。 使用角色管理數(shù)據(jù)庫中的用戶和用戶組。 身份驗證MySQL 在數(shù)據(jù)庫級管理身份驗證。 基本只支持密碼認(rèn)證。 PostgreSQL 支持豐富的認(rèn)證方法:信任認(rèn)證、口令認(rèn)證、Kerberos 認(rèn)證、基于 Ident 的認(rèn)證、LDAP 認(rèn)證、PAM 認(rèn)證加密可以在表級指定密碼來對數(shù)據(jù)進(jìn)行加密。 還可以使用 AES_ENCRYPT 和 AES_DECRYPT 函數(shù)對列數(shù)據(jù)進(jìn)行加密和解密。 可以通過 SSL 連接實現(xiàn)網(wǎng)絡(luò)加密。 可以使用 pgcrypto 庫中的函數(shù)對列進(jìn)行加密/解密。 可以通過 SSL 連接實現(xiàn)網(wǎng)絡(luò)加密。 審計可以對 querylog 執(zhí)行 grep。 可以在表上使用 PL/pgSQL 觸發(fā)器來進(jìn)行審計。 查詢解釋使用 EXPLAIN 命令查看查詢的解釋計劃。 使用 EXPLAIN 命令查看查詢的解釋計劃。 備份、恢復(fù)和日志InnoDB 使用寫前(write-ahead)日志記錄。 支持在線和離線完全備份以及崩潰和事務(wù)恢復(fù)。 需要第三方軟件才能支持熱備份。 在數(shù)據(jù)目錄的一個子目錄中維護(hù)寫前日志。 支持在線和離線完全備份以及崩潰、時間點和事務(wù)恢復(fù)。 可以支持熱備份。 JDBC 驅(qū)動程序可以從 參考資料 下載 JDBC 驅(qū)動程序。 可以從 參考資料 下載 JDBC 驅(qū)動程序。 表類型取決于存儲引擎。 例如,NDB 存儲引擎支持分區(qū)表,內(nèi)存引擎支持內(nèi)存表。 支持臨時表、常規(guī)表以及范圍和列表類型的分區(qū)表。 不支持哈希分區(qū)表。 由于PostgreSQL的表分區(qū)是通過表繼承和規(guī)則系統(tǒng)完成了,所以可以實現(xiàn)更復(fù)雜的分區(qū)方式。 索引類型取決于存儲引擎。 MyISAM:BTREE,InnoDB:BTREE。 支持 B-樹、哈希、R-樹和 Gist 索引。 約束支持主鍵、外鍵、惟一和非空約束。 對檢查約束進(jìn)行解析,但是不強(qiáng)制實施。 支持主鍵、外鍵、惟一、非空和檢查約束。 存儲過程和用戶定義函數(shù)支持 CREATE PROCEDURE 和 CREATE FUNCTION 語句。 存儲過程可以用 SQL 和 C++ 編寫。 用戶定義函數(shù)可以用 SQL、C 和 C++ 編寫。 沒有單獨的存儲過程,都是通過函數(shù)實現(xiàn)的。 用戶定義函數(shù)可以用 PL/pgSQL(專用的過程語言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 編寫。 觸發(fā)器支持行前觸發(fā)器、行后觸發(fā)器和語句觸發(fā)器,觸發(fā)器語句用過程語言復(fù)合語句編寫。 支持行前觸發(fā)器、行后觸發(fā)器和語句觸發(fā)器,觸發(fā)器過程用 C 編寫。 系統(tǒng)配置文件數(shù)據(jù)庫配置客戶機(jī)連接文件_ 支持有限的 XML 支持。 有限的 XML 支持。 數(shù)據(jù)訪問和管理服務(wù)器OPTIMIZE TABLE —— 回收未使用的空間并消除數(shù)據(jù)文件的碎片myisamchk -analyze —— 更新查詢優(yōu)化器所使用的統(tǒng)計數(shù)據(jù)(MyISAM 存儲引擎)mysql —— 命令行工具M(jìn)ySQL Administrator —— 客戶機(jī) GUI 工具Vacuum —— 回收未使用的空間Analyze —— 更新查詢優(yōu)化器所使用的統(tǒng)計數(shù)據(jù)psql —— 命令行工具pgAdmin —— 客戶機(jī) GUI 工具并發(fā)控制支持表級和行級鎖。 InnoDB 存儲引擎支持 READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ 和 SERIALIZABLE。 使用 SET TRANSACTION ISOLATION LEVEL 語句在事務(wù)級設(shè)置隔離級別。 支持表級和行級鎖。 支持的 ANSI 隔離級別是 Read Committed(默認(rèn) —— 能看到查詢啟動時數(shù)據(jù)庫的快照)和 Serialization(與 Repeatable Read 相似 —— 只能看到在事務(wù)啟動之前提交的結(jié)果)。 使用 SET TRANSACTION 語句在事務(wù)級設(shè)置隔離級別。 使用 SET SESSION 在會話級進(jìn)行設(shè)置。 MySQL相對于PostgreSQL的劣勢:MySQLPostgreSQL最重要的引擎InnoDB很早就由Oracle公司控制。 目前整個MySQL數(shù)據(jù)庫都由Oracle控制。 BSD協(xié)議,沒有被大公司壟斷。 對復(fù)雜查詢的處理較弱,查詢優(yōu)化器不夠成熟很強(qiáng)大的查詢優(yōu)化器,支持很復(fù)雜的查詢處理。 只有一種表連接類型:嵌套循環(huán)連接(nested-loop),不支持排序-合并連接(sort-merge join)與散列連接(hash join)。 都支持性能優(yōu)化工具與度量信息不足提供了一些性能視圖,可以方便的看到發(fā)生在一個表和索引上的select、delete、update、insert統(tǒng)計信息,也可以看到cache命中率。 網(wǎng)上有一個開源的pgstatspack工具。 InnoDB的表和索引都是按相同的方式存儲。 也就是說表都是索引組織表。 這一般要求主鍵不能太長而且插入時的主鍵最好是按順序遞增,否則對性能有很大影響。 不存在這個問題。 大部分查詢只能使用表上的單一索引;在某些情況下,會存在使用多個索引的查詢,但是查詢優(yōu)化器通常會低估其成本,它們常常比表掃描還要慢。 不存在這個問題表增加列,基本上是重建表和索引,會花很長時間。 表增加列,只是在數(shù)據(jù)字典中增加表定義,不會重建表存儲過程與觸發(fā)器的功能有限。 可用來編寫存儲過程、觸發(fā)器、計劃事件以及存儲函數(shù)的語言功能較弱除支持pl/pgsql寫存儲過程,還支持perl、python、Tcl類型的存儲過程:pl/perl,pl/python,pl/tcl。 也支持用C語言寫存儲過程。 不支持Sequence。 支持不支持函數(shù)索引,只能在創(chuàng)建基于具體列的索引。 不支持物化視圖。 支持函數(shù)索引,同時還支持部分?jǐn)?shù)據(jù)索引,通過規(guī)則系統(tǒng)可以實現(xiàn)物化視圖的功能。 執(zhí)行計劃并不是全局共享的, 僅僅在連接內(nèi)部是共享的。 執(zhí)行計劃共享MySQL支持的SQL語法(ANSI SQL標(biāo)準(zhǔn))的很小一部分。 不支持遞歸查詢、通用表表達(dá)式(Oracle的with 語句)或者窗口函數(shù)(分析函數(shù))。 都 支持不支持用戶自定義類型或域(domain)支持。 對于時間、日期、間隔等時間類型沒有秒以下級別的存儲類型可以精確到秒以下。 身份驗證功能是完全內(nèi)置的,不支持操作系統(tǒng)認(rèn)證、PAM認(rèn)證,不支持LDAP以及其它類似的外部身份驗證功能。 支持OS認(rèn)證、Kerberos 認(rèn)證 、Ident 的認(rèn)證、LDAP 認(rèn)證、PAM 認(rèn)證不支持database link。 有一種叫做Federated的存儲引擎可以作為一個中轉(zhuǎn)將查詢語句傳遞到遠(yuǎn)程服務(wù)器的一個表上,不過,它功能很粗糙并且漏洞很多有dblink,同時還有一個dbi-link的東西,可以連接到oracle和mysql上。 Mysql Cluster可能與你的想象有較大差異。 開源的cluster軟件較少。 復(fù)制(Replication)功能是異步的,并且有很大的局限性.例如,它是單線程的(single-threaded),因此一個處理能力更強(qiáng)的Slave的恢復(fù)速度也很難跟上處理能力相對較慢的Master.有豐富的開源cluster軟件支持。 explain看執(zhí)行計劃的結(jié)果簡單。 explain返回豐富的信息。 類似于ALTER TABLE或CREATE TABLE一類的操作都是非事務(wù)性的.它們會提交未提交的事務(wù),并且不能回滾也不能做災(zāi)難恢復(fù) DDL也是有事務(wù)的。 PostgreSQL主要優(yōu)勢:1. PostgreSQL完全免費(fèi),而且是BSD協(xié)議,如果你把PostgreSQL改一改,然后再拿去賣錢,也沒有人管你,這一點很重要,這表明了PostgreSQL數(shù)據(jù)庫不會被其它公司控制。 oracle數(shù)據(jù)庫不用說了,是商業(yè)數(shù)據(jù)庫,不開放。 而MySQL數(shù)據(jù)庫雖然是開源的,但現(xiàn)在隨著SUN被oracle公司收購,現(xiàn)在基本上被oracle公司控制,其實在SUN被收購之前,MySQL中最重要的InnoDB引擎也是被oracle公司控制的,而在MySQL中很多重要的數(shù)據(jù)都是放在InnoDB引擎中的,反正我們公司都是這樣的。 所以如果MySQL的市場范圍與oracle數(shù)據(jù)庫的市場范圍沖突時,oracle公司必定會犧牲MySQL,這是毫無疑問的。 2. 與PostgreSQl配合的開源軟件很多,有很多分布式集群軟件,如pgpool、pgcluster、slony、plploxy等等,很容易做讀寫分離、負(fù)載均衡、數(shù)據(jù)水平拆分等方案,而這在MySQL下則比較困難。 3. PostgreSQL源代碼寫的很清晰,易讀性比MySQL強(qiáng)太多了,懷疑MySQL的源代碼被混淆過。 所以很多公司都是基本PostgreSQL做二次開發(fā)的。 4. PostgreSQL在很多方面都比MySQL強(qiáng),如復(fù)雜SQL的執(zhí)行、存儲過程、觸發(fā)器、索引。 同時PostgreSQL是多進(jìn)程的,而MySQL是線程的,雖然并發(fā)不高時,MySQL處理速度快,但當(dāng)并發(fā)高的時候,對于現(xiàn)在多核的單臺機(jī)器上,MySQL的總體處理性能不如PostgreSQL,原因是MySQL的線程無法充分利用CPU的能力。 目前只想到這些,以后想到再添加,歡迎大家拍磚。 PostgreSQL與oracle或InnoDB的多版本實現(xiàn)的差別PostgreSQL與oracle或InnoDB的多版本實現(xiàn)最大的區(qū)別在于最新版本和歷史版本是否分離存儲,PostgreSQL不分,而oracle和InnoDB分,而innodb也只是分離了數(shù)據(jù),索引本身沒有分開。 PostgreSQL的主要優(yōu)勢在于: 1. PostgreSQL沒有回滾段,而oracle與innodb有回滾段,oracle與Innodb都有回滾段。 對于oracle與Innodb來說,回滾段是非常重要的,回滾段損壞,會導(dǎo)致數(shù)據(jù)丟失,甚至數(shù)據(jù)庫無法啟動的嚴(yán)重問題。 另由于PostgreSQL沒有回滾段,舊數(shù)據(jù)都是記錄在原先的文件中,所以當(dāng)數(shù)據(jù)庫異常crash后,恢復(fù)時,不會象oracle與Innodb數(shù)據(jù)庫那樣進(jìn)行那么復(fù)雜的恢復(fù),因為oracle與Innodb恢復(fù)時同步需要redo和undo。 所以PostgreSQL數(shù)據(jù)庫在出現(xiàn)異常crash后,數(shù)據(jù)庫起不來的幾率要比oracle和mysql小一些。 2. 由于舊的數(shù)據(jù)是直接記錄在數(shù)據(jù)文件中,而不是回滾段中,所以不會象oracle那樣經(jīng)常報ora-錯誤。 3. 回滾可以很快完成,因為回滾并不刪除數(shù)據(jù),而oracle與Innodb,回滾時很復(fù)雜,在事務(wù)回滾時必須清理該事務(wù)所進(jìn)行的修改,插入的記錄要刪除,更新的記錄要更新回來(見row_undo函數(shù)),同時回滾的過程也會再次產(chǎn)生大量的redo日志。 4. WAL日志要比oracle和Innodb簡單,對于oracle不僅需要記錄數(shù)據(jù)文件的變化,還要記錄回滾段的變化。 PostgreSQL的多版本的主要劣勢在于: 1、最新版本和歷史版本不分離存儲,導(dǎo)致清理老舊版本需要作更多的掃描,代價比較大,但一般的數(shù)據(jù)庫都有高峰期,如果我們合理安排VACUUM,這也不是很大的問題,而且在PostgreSQL9.0中VACUUM進(jìn)一步被加強(qiáng)了。 2、由于索引中完全沒有版本信息,不能實現(xiàn)Coverage index scan,即查詢只掃描索引,直接從索引中返回所需的屬性,還需要訪問表。 而oracle與Innodb則可以;進(jìn)程模式與線程模式的對比PostgreSQL和oracle是進(jìn)程模式,MySQL是線程模式。 進(jìn)程模式對多CPU利用率比較高。 進(jìn)程模式共享數(shù)據(jù)需要用到共享內(nèi)存,而線程模式數(shù)據(jù)本身就是在進(jìn)程空間內(nèi)都是共享的,不同線程訪問只需要控制好線程之間的同步。 線程模式對資源消耗比較少。 所以MySQL能支持遠(yuǎn)比oracle多的更多的連接。 對于PostgreSQL的來說,如果不使用連接池軟件,也存在這個問題,但PostgreSQL中有優(yōu)秀的連接池軟件軟件,如pgbouncer和pgpool,所以通過連接池也可以支持很多的連接。 堆表與索引組織表的的對比Oracle支持堆表,也支持索引組織表PostgreSQL只支持堆表,不支持索引組織表Innodb只支持索引組織表索引組織表的優(yōu)勢:表內(nèi)的數(shù)據(jù)就是按索引的方式組織,數(shù)據(jù)是有序的,如果數(shù)據(jù)都是按主鍵來訪問,那么訪問數(shù)據(jù)比較快。 而堆表,按主鍵訪問數(shù)據(jù)時,是需要先按主鍵索引找到數(shù)據(jù)的物理位置。 索引組織表的劣勢:索引組織表中上再加其它的索引時,其它的索引記錄的數(shù)據(jù)位置不再是物理位置,而是主鍵值,所以對于索引組織表來說,主鍵的值不能太大,否則占用的空間比較大。 對于索引組織表來說,如果每次在中間插入數(shù)據(jù),可能會導(dǎo)致索引分裂,索引分裂會大大降低插入的性能。 所以對于使用innodb來說,我們一般最好讓主鍵是一個無意義的序列,這樣插入每次都發(fā)生在最后,以避免這個問題。 由于索引組織表是按一個索引樹,一般它訪問數(shù)據(jù)塊必須按數(shù)據(jù)塊之間的關(guān)系進(jìn)行訪問,而不是按物理塊的訪問數(shù)據(jù)的,所以當(dāng)做全表掃描時要比堆表慢很多,這可能在OLTP中不明顯,但在數(shù)據(jù)倉庫的應(yīng)用中可能是一個問題。 PostgreSQL9.0中的特色功能: PostgreSQL中的Hot Standby功能也就是standby在應(yīng)用日志同步時,還可以提供只讀服務(wù),這對做讀寫分離很有用。 這個功能是oracle11g才有的功能。 PostgreSQL異步提交(Asynchronous Commit)的功能:這個功能oracle中也是到oracle11g R2才有的功能。 因為在很多應(yīng)用場景中,當(dāng)宕機(jī)時是允許丟失少量數(shù)據(jù)的,這個功能在這樣的場景中就特別合適。 在PostgreSQL9.0中把synchronous_commit設(shè)置為false就打開了這個功能。 需要注意的是,雖然設(shè)置為了異步提交,當(dāng)主機(jī)宕機(jī)時,PostgreSQL只會丟失少量數(shù)據(jù),異步提交并不會導(dǎo)致數(shù)據(jù)損壞而數(shù)據(jù)庫起不來的情況。 MySQL中沒有聽說過有這個功能。 PostgreSQL中索引的特色功能: PostgreSQL中可以有部分索引,也就是只能表中的部分?jǐn)?shù)據(jù)做索引,create index 可以帶where 條件。 同時PostgreSQL中的索引可以反向掃描,所以在PostgreSQL中可以不必建專門的降序索引了。
達(dá)芬奇的數(shù)據(jù)系統(tǒng)底層是基于數(shù)據(jù)庫管理的(包括工作臨時狀態(tài)的暫存),所以這個數(shù)據(jù)庫系統(tǒng)PostgreSQL9.0.4.1是必備的,不能取消。
本文作者蔡松露,作為云猿生數(shù)據(jù)的CTO和聯(lián)合創(chuàng)始人,以及阿里云數(shù)據(jù)庫的資深技術(shù)專家,他分享了在Kubernetes(K8s)環(huán)境中對比ECS(云服務(wù)器)上的PostgreSQL(ECS PG)和KubeBlocks(一個云原生數(shù)據(jù)庫管理系統(tǒng))的性能優(yōu)化經(jīng)驗。 他針對K8s上的數(shù)據(jù)庫性能提出了優(yōu)化策略,以確保在分布式架構(gòu)中數(shù)據(jù)庫能穩(wěn)定并滿足生產(chǎn)需求。 隨著企業(yè)傾向于全K8s架構(gòu),將數(shù)據(jù)庫遷移到Kubernetes面臨挑戰(zhàn)。 KubeBlocks,由曹偉(鳴嵩)團(tuán)隊開發(fā),作為數(shù)據(jù)庫管控平臺,支持多種數(shù)據(jù)庫,如MySQL、PG、Redis等。 蔡松露通過實際操作,首先調(diào)整了PG實例的資源限制,進(jìn)行了Sysbench讀寫壓力測試,以模擬生產(chǎn)環(huán)境。 在一系列的壓測中,他發(fā)現(xiàn)網(wǎng)絡(luò)延遲、磁盤帶寬瓶頸、Checkpoint與鎖競爭以及WAL日志創(chuàng)建過程中的問題對性能有很大影響。 通過調(diào)整臟頁回收比例、WAL日志大小和啟用Huge Page,他逐步縮小了問題范圍,最后將焦點鎖定在PostgreSQL內(nèi)核實現(xiàn)上,特別是WAL日志創(chuàng)建和同步機(jī)制。 在優(yōu)化過程中,蔡松露調(diào)整了wal_init_zero設(shè)置,并考慮了文件系統(tǒng)支持,以減少加鎖頻率。 他還建議根據(jù)存儲機(jī)制關(guān)閉full_page_write以降低IO競爭。 通過引入pgBouncer來處理高并發(fā),最終優(yōu)化后的KubeBlocks在并發(fā)量增加時表現(xiàn)出更好的性能和穩(wěn)定性。 總結(jié)來說,蔡松露的優(yōu)化策略顯示,盡管K8s環(huán)境下運(yùn)行PostgreSQL存在挑戰(zhàn),但通過細(xì)致的性能分析和針對性優(yōu)化,可以顯著提升數(shù)據(jù)庫在Kubernetes環(huán)境下的性能,使其滿足生產(chǎn)級別的要求。
具體過程如下:步驟1:安裝postgreSQL 9.2.4具體過程參見:如何安裝PostgreSQL 9.2.4 For Windows?步驟2:配置鑒權(quán)口令文件pg_upgrade會在升級過程中多次連接新舊數(shù)據(jù)庫,所以可以在pg_中將鑒權(quán)方式設(shè)為Trust或者在使用MD5鑒權(quán)方式下配置文件(文件位置:%APPDATA%\postgresql\)。 這樣可以避免在升級過程中提示鑒權(quán)失敗而導(dǎo)致升級不能正常進(jìn)行。 待升級成功后可以移除或清空文件內(nèi)容。 步驟3:安裝插件將舊數(shù)據(jù)庫服務(wù)器中使用的插件同樣安裝至新數(shù)據(jù)庫服務(wù)器中。 步驟4:停止新舊數(shù)據(jù)庫服務(wù)通過命令行或服務(wù)管理界面進(jìn)行出現(xiàn)問題:原因:未使用管理員權(quán)限運(yùn)行命令提示符(CMD)步驟5:用非windows系統(tǒng)管理員權(quán)限用戶做升級前準(zhǔn)備RUNAS /USER:postgres SET PATH=D:\Program Files\PostgreSQL\9.2\bin;%PATH%;步驟6:進(jìn)入postgres用戶目錄,執(zhí)行pg_upgrade(如果環(huán)境變量設(shè)置正確,會使用新版本下的pg_upgrade),會有升級相應(yīng)的日志文件生成于此命令格式:pg_upgrade -b oldbindir -B newbindir -d olddatadir -D newdatadir [option...]其中會使用 - r 參數(shù):作用是在系統(tǒng)升級成功后仍然保留日志文件。 如果升級過程中出現(xiàn)問題,可以通過windos事件檢查器及相應(yīng)升級日志文件進(jìn)行分析。 pg_upgrade_ pg_upgrade_ pg_upgrade_ pg_upgrade_server_ pg_upgrade_ 出現(xiàn)問題:(1) 沒有配置或pg_,檢查日志文件有如下錯誤信息could not connect to old postmaster started with the command:D:/Program Files (x86)/PostgreSQL/9.1/bin/pg_ctl -w -l pg_upgrade_ -D D:/Users/lv/Data/PostgreSQL/9.1 -o -p -b startcannot write to log file pg_upgrade_ (2) PATH環(huán)境變量配置錯誤引起的失敗手冊上的示例為:SET PATH=%PATH%;C:\Program Files\PostgreSQL\9.0\bin; 這樣舊數(shù)據(jù)庫服務(wù)器環(huán)境變量將會使其路徑優(yōu)先被搜索到,導(dǎo)致提示該版本下的pg_upgrade不支持升級到新數(shù)據(jù)庫版本。 (3) 失敗后根據(jù)提示重新用initdb生成數(shù)據(jù)庫時未創(chuàng)建用戶postgres (4) 創(chuàng)建用戶時未創(chuàng)建口令,檢查pg_upgrade_,有如下錯誤信息connection to database failed: fe_sendauth: no password supplied (5) 升級進(jìn)程未結(jié)束再次運(yùn)行pg_upgrade不成功可以在進(jìn)程管理中停止所有postgresql進(jìn)程,然后重新進(jìn)行升級(6) 升級成功后,日志文件被自動刪除,可以在命令行中用-r參數(shù)指定保留。 步驟7:恢復(fù)對配置文件(pg_,)進(jìn)行的修改主要是將鑒權(quán)方式修改回比較安全的模式步驟8:升級后處理升級完成后,pg_upgrade會提示需要運(yùn)行腳本或批處理文件檢查新數(shù)據(jù)庫服務(wù)器及刪除舊數(shù)據(jù)庫服務(wù)器數(shù)據(jù)。
特性MySQLPostgreSQL實例通過執(zhí)行 MySQL 命令(mysqld)啟動實例。 一個實例可以管理一個或多個數(shù)據(jù)庫。 一臺服務(wù)器可以運(yùn)行多個 mysqld 實例。 一個實例管理器可以監(jiān)視 mysqld 的各個實例。 通過執(zhí)行 Postmaster 進(jìn)程(pg_ctl)啟動實例。 一個實例可以管理一個或多個數(shù)據(jù)庫,這些數(shù)據(jù)庫組成一個集群。 集群是磁盤上的一個區(qū)域,這個區(qū)域在安裝時初始化并由一個目錄組成,所有數(shù)據(jù)都存儲在這個目錄中。 使用 initdb 創(chuàng)建第一個數(shù)據(jù)庫。 一臺機(jī)器上可以啟動多個實例。 數(shù)據(jù)庫數(shù)據(jù)庫是命名的對象集合,是與實例中的其他數(shù)據(jù)庫分離的實體。 一個 MySQL 實例中的所有數(shù)據(jù)庫共享同一個系統(tǒng)編目。 數(shù)據(jù)庫是命名的對象集合,每個數(shù)據(jù)庫是與其他數(shù)據(jù)庫分離的實體。 每個數(shù)據(jù)庫有自己的系統(tǒng)編目,但是所有數(shù)據(jù)庫共享 pg_databases。 數(shù)據(jù)緩沖區(qū)通過 innodb_buffer_pool_size 配置參數(shù)設(shè)置數(shù)據(jù)緩沖區(qū)。 這個參數(shù)是內(nèi)存緩沖區(qū)的字節(jié)數(shù),InnoDB 使用這個緩沖區(qū)來緩存表的數(shù)據(jù)和索引。 在專用的數(shù)據(jù)庫服務(wù)器上,這個參數(shù)最高可以設(shè)置為機(jī)器物理內(nèi)存量的 80%。 Shared_buffers 緩存。 在默認(rèn)情況下分配 64 個緩沖區(qū)。 默認(rèn)的塊大小是 8K。 可以通過設(shè)置 文件中的 shared_buffers 參數(shù)來更新緩沖區(qū)緩存。 數(shù)據(jù)庫連接客戶機(jī)使用 CONNECT 或 USE 語句連接數(shù)據(jù)庫,這時要指定數(shù)據(jù)庫名,還可以指定用戶 id 和密碼。 使用角色管理數(shù)據(jù)庫中的用戶和用戶組。 客戶機(jī)使用 connect 語句連接數(shù)據(jù)庫,這時要指定數(shù)據(jù)庫名,還可以指定用戶 id 和密碼。 使用角色管理數(shù)據(jù)庫中的用戶和用戶組。 身份驗證MySQL 在數(shù)據(jù)庫級管理身份驗證。 基本只支持密碼認(rèn)證。 PostgreSQL 支持豐富的認(rèn)證方法:信任認(rèn)證、口令認(rèn)證、Kerberos 認(rèn)證、基于 Ident 的認(rèn)證、LDAP 認(rèn)證、PAM 認(rèn)證加密可以在表級指定密碼來對數(shù)據(jù)進(jìn)行加密。 還可以使用 AES_ENCRYPT 和 AES_DECRYPT 函數(shù)對列數(shù)據(jù)進(jìn)行加密和解密。 可以通過 SSL 連接實現(xiàn)網(wǎng)絡(luò)加密。 可以使用 pgcrypto 庫中的函數(shù)對列進(jìn)行加密/解密。 可以通過 SSL 連接實現(xiàn)網(wǎng)絡(luò)加密。 審計可以對 querylog 執(zhí)行 grep。 可以在表上使用 PL/pgSQL 觸發(fā)器來進(jìn)行審計。 查詢解釋使用 EXPLAIN 命令查看查詢的解釋計劃。 使用 EXPLAIN 命令查看查詢的解釋計劃。 備份、恢復(fù)和日志InnoDB 使用寫前(write-ahead)日志記錄。 支持在線和離線完全備份以及崩潰和事務(wù)恢復(fù)。 需要第三方軟件才能支持熱備份。 在數(shù)據(jù)目錄的一個子目錄中維護(hù)寫前日志。 支持在線和離線完全備份以及崩潰、時間點和事務(wù)恢復(fù)。 可以支持熱備份。 JDBC 驅(qū)動程序可以從 參考資料 下載 JDBC 驅(qū)動程序。 可以從 參考資料 下載 JDBC 驅(qū)動程序。 表類型取決于存儲引擎。 例如,NDB 存儲引擎支持分區(qū)表,內(nèi)存引擎支持內(nèi)存表。 支持臨時表、常規(guī)表以及范圍和列表類型的分區(qū)表。 不支持哈希分區(qū)表。 由于PostgreSQL的表分區(qū)是通過表繼承和規(guī)則系統(tǒng)完成了,所以可以實現(xiàn)更復(fù)雜的分區(qū)方式。 索引類型取決于存儲引擎。 MyISAM:BTREE,InnoDB:BTREE。 支持 B-樹、哈希、R-樹和 Gist 索引。 約束支持主鍵、外鍵、惟一和非空約束。 對檢查約束進(jìn)行解析,但是不強(qiáng)制實施。 支持主鍵、外鍵、惟一、非空和檢查約束。 存儲過程和用戶定義函數(shù)支持 CREATE PROCEDURE 和 CREATE FUNCTION 語句。 存儲過程可以用 SQL 和 C++ 編寫。 用戶定義函數(shù)可以用 SQL、C 和 C++ 編寫。 沒有單獨的存儲過程,都是通過函數(shù)實現(xiàn)的。 用戶定義函數(shù)可以用 PL/pgSQL(專用的過程語言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 編寫。 觸發(fā)器支持行前觸發(fā)器、行后觸發(fā)器和語句觸發(fā)器,觸發(fā)器語句用過程語言復(fù)合語句編寫。 支持行前觸發(fā)器、行后觸發(fā)器和語句觸發(fā)器,觸發(fā)器過程用 C 編寫。 系統(tǒng)配置文件數(shù)據(jù)庫配置客戶機(jī)連接文件_ 支持有限的 XML 支持。 有限的 XML 支持。 數(shù)據(jù)訪問和管理服務(wù)器OPTIMIZE TABLE —— 回收未使用的空間并消除數(shù)據(jù)文件的碎片myisamchk -analyze —— 更新查詢優(yōu)化器所使用的統(tǒng)計數(shù)據(jù)(MyISAM 存儲引擎)mysql —— 命令行工具M(jìn)ySQL Administrator —— 客戶機(jī) GUI 工具Vacuum —— 回收未使用的空間Analyze —— 更新查詢優(yōu)化器所使用的統(tǒng)計數(shù)據(jù)psql —— 命令行工具pgAdmin —— 客戶機(jī) GUI 工具并發(fā)控制支持表級和行級鎖。 InnoDB 存儲引擎支持 READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ 和 SERIALIZABLE。 使用 SET TRANSACTION ISOLATION LEVEL 語句在事務(wù)級設(shè)置隔離級別。 支持表級和行級鎖。 支持的 ANSI 隔離級別是 Read Committed(默認(rèn) —— 能看到查詢啟動時數(shù)據(jù)庫的快照)和 Serialization(與 Repeatable Read 相似 —— 只能看到在事務(wù)啟動之前提交的結(jié)果)。 使用 SET TRANSACTION 語句在事務(wù)級設(shè)置隔離級別。 使用 SET SESSION 在會話級進(jìn)行設(shè)置。 MySQL相對于PostgreSQL的劣勢:MySQLPostgreSQL最重要的引擎InnoDB很早就由Oracle公司控制。 目前整個MySQL數(shù)據(jù)庫都由Oracle控制。 BSD協(xié)議,沒有被大公司壟斷。 對復(fù)雜查詢的處理較弱,查詢優(yōu)化器不夠成熟很強(qiáng)大的查詢優(yōu)化器,支持很復(fù)雜的查詢處理。 只有一種表連接類型:嵌套循環(huán)連接(nested-loop),不支持排序-合并連接(sort-merge join)與散列連接(hash join)。 都支持性能優(yōu)化工具與度量信息不足提供了一些性能視圖,可以方便的看到發(fā)生在一個表和索引上的select、delete、update、insert統(tǒng)計信息,也可以看到cache命中率。 網(wǎng)上有一個開源的pgstatspack工具。 InnoDB的表和索引都是按相同的方式存儲。 也就是說表都是索引組織表。 這一般要求主鍵不能太長而且插入時的主鍵最好是按順序遞增,否則對性能有很大影響。 不存在這個問題。 大部分查詢只能使用表上的單一索引;在某些情況下,會存在使用多個索引的查詢,但是查詢優(yōu)化器通常會低估其成本,它們常常比表掃描還要慢。 不存在這個問題表增加列,基本上是重建表和索引,會花很長時間。 表增加列,只是在數(shù)據(jù)字典中增加表定義,不會重建表存儲過程與觸發(fā)器的功能有限。 可用來編寫存儲過程、觸發(fā)器、計劃事件以及存儲函數(shù)的語言功能較弱除支持pl/pgsql寫存儲過程,還支持perl、python、Tcl類型的存儲過程:pl/perl,pl/python,pl/tcl。 也支持用C語言寫存儲過程。 不支持Sequence。 支持不支持函數(shù)索引,只能在創(chuàng)建基于具體列的索引。 不支持物化視圖。 支持函數(shù)索引,同時還支持部分?jǐn)?shù)據(jù)索引,通過規(guī)則系統(tǒng)可以實現(xiàn)物化視圖的功能。 執(zhí)行計劃并不是全局共享的, 僅僅在連接內(nèi)部是共享的。 執(zhí)行計劃共享MySQL支持的SQL語法(ANSI SQL標(biāo)準(zhǔn))的很小一部分。 不支持遞歸查詢、通用表表達(dá)式(Oracle的with 語句)或者窗口函數(shù)(分析函數(shù))。 都 支持不支持用戶自定義類型或域(domain)支持。 對于時間、日期、間隔等時間類型沒有秒以下級別的存儲類型可以精確到秒以下。 身份驗證功能是完全內(nèi)置的,不支持操作系統(tǒng)認(rèn)證、PAM認(rèn)證,不支持LDAP以及其它類似的外部身份驗證功能。 支持OS認(rèn)證、Kerberos 認(rèn)證 、Ident 的認(rèn)證、LDAP 認(rèn)證、PAM 認(rèn)證不支持database link。 有一種叫做Federated的存儲引擎可以作為一個中轉(zhuǎn)將查詢語句傳遞到遠(yuǎn)程服務(wù)器的一個表上,不過,它功能很粗糙并且漏洞很多有dblink,同時還有一個dbi-link的東西,可以連接到oracle和mysql上。 Mysql Cluster可能與你的想象有較大差異。 開源的cluster軟件較少。 復(fù)制(Replication)功能是異步的,并且有很大的局限性.例如,它是單線程的(single-threaded),因此一個處理能力更強(qiáng)的Slave的恢復(fù)速度也很難跟上處理能力相對較慢的Master.有豐富的開源cluster軟件支持。 explain看執(zhí)行計劃的結(jié)果簡單。 explain返回豐富的信息。 類似于ALTER TABLE或CREATE TABLE一類的操作都是非事務(wù)性的.它們會提交未提交的事務(wù),并且不能回滾也不能做災(zāi)難恢復(fù) DDL也是有事務(wù)的。 PostgreSQL主要優(yōu)勢:1. PostgreSQL完全免費(fèi),而且是BSD協(xié)議,如果你把PostgreSQL改一改,然后再拿去賣錢,也沒有人管你,這一點很重要,這表明了PostgreSQL數(shù)據(jù)庫不會被其它公司控制。 oracle數(shù)據(jù)庫不用說了,是商業(yè)數(shù)據(jù)庫,不開放。 而MySQL數(shù)據(jù)庫雖然是開源的,但現(xiàn)在隨著SUN被oracle公司收購,現(xiàn)在基本上被oracle公司控制,其實在SUN被收購之前,MySQL中最重要的InnoDB引擎也是被oracle公司控制的,而在MySQL中很多重要的數(shù)據(jù)都是放在InnoDB引擎中的,反正我們公司都是這樣的。 所以如果MySQL的市場范圍與oracle數(shù)據(jù)庫的市場范圍沖突時,oracle公司必定會犧牲MySQL,這是毫無疑問的。 2. 與PostgreSQl配合的開源軟件很多,有很多分布式集群軟件,如pgpool、pgcluster、slony、plploxy等等,很容易做讀寫分離、負(fù)載均衡、數(shù)據(jù)水平拆分等方案,而這在MySQL下則比較困難。 3. PostgreSQL源代碼寫的很清晰,易讀性比MySQL強(qiáng)太多了,懷疑MySQL的源代碼被混淆過。 所以很多公司都是基本PostgreSQL做二次開發(fā)的。 4. PostgreSQL在很多方面都比MySQL強(qiáng),如復(fù)雜SQL的執(zhí)行、存儲過程、觸發(fā)器、索引。 同時PostgreSQL是多進(jìn)程的,而MySQL是線程的,雖然并發(fā)不高時,MySQL處理速度快,但當(dāng)并發(fā)高的時候,對于現(xiàn)在多核的單臺機(jī)器上,MySQL的總體處理性能不如PostgreSQL,原因是MySQL的線程無法充分利用CPU的能力。 目前只想到這些,以后想到再添加,歡迎大家拍磚。 PostgreSQL與oracle或InnoDB的多版本實現(xiàn)的差別PostgreSQL與oracle或InnoDB的多版本實現(xiàn)最大的區(qū)別在于最新版本和歷史版本是否分離存儲,PostgreSQL不分,而oracle和InnoDB分,而innodb也只是分離了數(shù)據(jù),索引本身沒有分開。 PostgreSQL的主要優(yōu)勢在于: 1. PostgreSQL沒有回滾段,而oracle與innodb有回滾段,oracle與Innodb都有回滾段。 對于oracle與Innodb來說,回滾段是非常重要的,回滾段損壞,會導(dǎo)致數(shù)據(jù)丟失,甚至數(shù)據(jù)庫無法啟動的嚴(yán)重問題。 另由于PostgreSQL沒有回滾段,舊數(shù)據(jù)都是記錄在原先的文件中,所以當(dāng)數(shù)據(jù)庫異常crash后,恢復(fù)時,不會象oracle與Innodb數(shù)據(jù)庫那樣進(jìn)行那么復(fù)雜的恢復(fù),因為oracle與Innodb恢復(fù)時同步需要redo和undo。 所以PostgreSQL數(shù)據(jù)庫在出現(xiàn)異常crash后,數(shù)據(jù)庫起不來的幾率要比oracle和mysql小一些。 2. 由于舊的數(shù)據(jù)是直接記錄在數(shù)據(jù)文件中,而不是回滾段中,所以不會象oracle那樣經(jīng)常報ora-錯誤。 3. 回滾可以很快完成,因為回滾并不刪除數(shù)據(jù),而oracle與Innodb,回滾時很復(fù)雜,在事務(wù)回滾時必須清理該事務(wù)所進(jìn)行的修改,插入的記錄要刪除,更新的記錄要更新回來(見row_undo函數(shù)),同時回滾的過程也會再次產(chǎn)生大量的redo日志。 4. WAL日志要比oracle和Innodb簡單,對于oracle不僅需要記錄數(shù)據(jù)文件的變化,還要記錄回滾段的變化。 PostgreSQL的多版本的主要劣勢在于: 1、最新版本和歷史版本不分離存儲,導(dǎo)致清理老舊版本需要作更多的掃描,代價比較大,但一般的數(shù)據(jù)庫都有高峰期,如果我們合理安排VACUUM,這也不是很大的問題,而且在PostgreSQL9.0中VACUUM進(jìn)一步被加強(qiáng)了。 2、由于索引中完全沒有版本信息,不能實現(xiàn)Coverage index scan,即查詢只掃描索引,直接從索引中返回所需的屬性,還需要訪問表。 而oracle與Innodb則可以;進(jìn)程模式與線程模式的對比PostgreSQL和oracle是進(jìn)程模式,MySQL是線程模式。 進(jìn)程模式對多CPU利用率比較高。 進(jìn)程模式共享數(shù)據(jù)需要用到共享內(nèi)存,而線程模式數(shù)據(jù)本身就是在進(jìn)程空間內(nèi)都是共享的,不同線程訪問只需要控制好線程之間的同步。 線程模式對資源消耗比較少。 所以MySQL能支持遠(yuǎn)比oracle多的更多的連接。 對于PostgreSQL的來說,如果不使用連接池軟件,也存在這個問題,但PostgreSQL中有優(yōu)秀的連接池軟件軟件,如pgbouncer和pgpool,所以通過連接池也可以支持很多的連接。 堆表與索引組織表的的對比Oracle支持堆表,也支持索引組織表PostgreSQL只支持堆表,不支持索引組織表Innodb只支持索引組織表索引組織表的優(yōu)勢:表內(nèi)的數(shù)據(jù)就是按索引的方式組織,數(shù)據(jù)是有序的,如果數(shù)據(jù)都是按主鍵來訪問,那么訪問數(shù)據(jù)比較快。 而堆表,按主鍵訪問數(shù)據(jù)時,是需要先按主鍵索引找到數(shù)據(jù)的物理位置。 索引組織表的劣勢:索引組織表中上再加其它的索引時,其它的索引記錄的數(shù)據(jù)位置不再是物理位置,而是主鍵值,所以對于索引組織表來說,主鍵的值不能太大,否則占用的空間比較大。 對于索引組織表來說,如果每次在中間插入數(shù)據(jù),可能會導(dǎo)致索引分裂,索引分裂會大大降低插入的性能。 所以對于使用innodb來說,我們一般最好讓主鍵是一個無意義的序列,這樣插入每次都發(fā)生在最后,以避免這個問題。 由于索引組織表是按一個索引樹,一般它訪問數(shù)據(jù)塊必須按數(shù)據(jù)塊之間的關(guān)系進(jìn)行訪問,而不是按物理塊的訪問數(shù)據(jù)的,所以當(dāng)做全表掃描時要比堆表慢很多,這可能在OLTP中不明顯,但在數(shù)據(jù)倉庫的應(yīng)用中可能是一個問題。 PostgreSQL9.0中的特色功能: PostgreSQL中的Hot Standby功能也就是standby在應(yīng)用日志同步時,還可以提供只讀服務(wù),這對做讀寫分離很有用。 這個功能是oracle11g才有的功能。 PostgreSQL異步提交(Asynchronous Commit)的功能:這個功能oracle中也是到oracle11g R2才有的功能。 因為在很多應(yīng)用場景中,當(dāng)宕機(jī)時是允許丟失少量數(shù)據(jù)的,這個功能在這樣的場景中就特別合適。 在PostgreSQL9.0中把synchronous_commit設(shè)置為false就打開了這個功能。 需要注意的是,雖然設(shè)置為了異步提交,當(dāng)主機(jī)宕機(jī)時,PostgreSQL只會丟失少量數(shù)據(jù),異步提交并不會導(dǎo)致數(shù)據(jù)損壞而數(shù)據(jù)庫起不來的情況。 MySQL中沒有聽說過有這個功能。 PostgreSQL中索引的特色功能: PostgreSQL中可以有部分索引,也就是只能表中的部分?jǐn)?shù)據(jù)做索引,create index 可以帶where 條件。 同時PostgreSQL中的索引可以反向掃描,所以在PostgreSQL中可以不必建專門的降序索引了。
內(nèi)容聲明:
1、本站收錄的內(nèi)容來源于大數(shù)據(jù)收集,版權(quán)歸原網(wǎng)站所有!
2、本站收錄的內(nèi)容若侵害到您的利益,請聯(lián)系我們進(jìn)行刪除處理!
3、本站不接受違法信息,如您發(fā)現(xiàn)違法內(nèi)容,請聯(lián)系我們進(jìn)行舉報處理!
4、本文地址:http://www.hudongshop.com/article/3856942fe0b6126ce6c1.html,復(fù)制請保留版權(quán)鏈接!
圖像格式轉(zhuǎn)換在圖像處理中是很常見的一種操作,不同的圖像格式具有不同的特點,在不同的場景下有不同的適用性,其中JPEG和PNG是兩種最常用的圖像格式,JPEG,JointPhotographicExpertsGroup,是一種有損壓縮格式,可以大幅度壓縮圖像文件大小,同時保持較高的圖像質(zhì)量,JPEG的優(yōu)點是壓縮效率高,適用于存儲照片和圖...。
本站公告 2024-09-28 21:20:40
存儲過程基礎(chǔ)存儲過程是預(yù)先編譯的模塊化SQL語句集,存儲在數(shù)據(jù)庫中,它們與函數(shù)類似,但更復(fù)雜,可以執(zhí)行復(fù)雜的事務(wù)處理,包括數(shù)據(jù)操作、條件語句和循環(huán),語法CREATEPROCEDURE[schema,name].[procedure,name],[parameter,name1][data,type][IN,OUT,INOUT],[pa...。
互聯(lián)網(wǎng)資訊 2024-09-26 18:50:22
在開發(fā)多語言應(yīng)用程序時,本地化是一個至關(guān)重要的方面,它可以確保您的應(yīng)用程序可供全球用戶使用,并為他們提供更完善的用戶體驗,在.NET中,ResX文件是一種有效且廣泛使用的本地化方法,它們允許您將應(yīng)用程序中的字符串與特定語言和區(qū)域設(shè)置相關(guān)聯(lián),本文將深入探討ResX文件,指導(dǎo)您創(chuàng)建和使用它們來有效地本地化您的應(yīng)用程序,什么是ResX文件,...。
最新資訊 2024-09-16 21:59:37
VBScript是一種腳本語言,可以與HTML集成,以創(chuàng)建交互式的Web頁面,文章將介紹如何使用VBScript和HTML來創(chuàng)建交互式Web頁面,使用VBScript創(chuàng)建交互式Web頁面要使用VBScript創(chuàng)建交互式Web頁面,您需要使用以下步驟,1.創(chuàng)建HTML文件,需要創(chuàng)建一個HTML文件,其中包含VBScript腳本,2.添加...。
互聯(lián)網(wǎng)資訊 2024-09-16 05:58:22
簡介CSS預(yù)處理器是一種工具,可以幫助我們更輕松、更高效地編寫CSS代碼,它們通過在編譯時添加額外的功能和語法擴(kuò)展,讓CSS開發(fā)變得更加便利,本文將介紹三種最流行的CSS預(yù)處理器,Sass、Less和Stylus,我們將探討它們的語法、特性和進(jìn)階使用方法,SassSass,SyntacticallyAwesomeStyleSheets...。
互聯(lián)網(wǎng)資訊 2024-09-15 09:26:04
簡介在處理數(shù)據(jù)時,四舍五入是一個重要的操作,可以提高數(shù)據(jù)精度和可用性,在Excel中,Roundup函數(shù)是一個功能強(qiáng)大的工具,可以輕松地四舍五入數(shù)字,本文將深入探討Roundup函數(shù),包括其語法、用法、示例和高級技巧,語法=ROUNDUP,number,num,digits,number,要四舍五入的數(shù)字,num,digits,以小數(shù)...。
最新資訊 2024-09-12 17:56:24
視覺層次是數(shù)據(jù)庫界面設(shè)計中一個重要的概念,它指的是利用視覺元素來創(chuàng)建界面的等級結(jié)構(gòu),幫助用戶輕松地找到和理解信息,通過使用顏色、對比度、大小、形狀等視覺提示,設(shè)計師可以將用戶的目光引向最重要的元素,并創(chuàng)建清晰且易于瀏覽的界面,利用視覺層次的優(yōu)點提高用戶體驗,視覺層次可以幫助用戶更快地找到他們需要的信息,從而提高用戶體驗,提高效率,通過...。
最新資訊 2024-09-11 20:28:44
編程中國是一個領(lǐng)先的在線編程學(xué)習(xí)平臺,旨在幫助人們探索技術(shù)世界的無限可能,憑借其全面且易于理解的內(nèi)容,編程中國已成為初學(xué)者和有經(jīng)驗的程序員的理想資源,涵蓋廣泛的技術(shù)主題編程中國涵蓋廣泛的技術(shù)主題,包括,編程語言,如Python、Java、C,、JavaScript,數(shù)據(jù)結(jié)構(gòu)和算法云計算人工智能機(jī)器學(xué)習(xí)大數(shù)據(jù)網(wǎng)絡(luò)安全區(qū)塊鏈移動應(yīng)用程序...。
互聯(lián)網(wǎng)資訊 2024-09-09 09:55:52
ASP,ActiveServerPages,是一種由Microsoft開發(fā)的服務(wù)器端腳本語言,用于創(chuàng)建動態(tài)Web頁面,ASP是一種功能強(qiáng)大的工具,但它也可能成為安全威脅,如果它沒有得到正確保護(hù),本文將提供一份ASP安全指南,以幫助您保護(hù)您的Web應(yīng)用免受威脅和漏洞的影響,ASP安全性威脅ASP應(yīng)用程序可能面臨以下安全威脅,跨站腳本攻擊...。
技術(shù)教程 2024-09-09 05:27:33
遞歸函數(shù)是一種在函數(shù)內(nèi)部調(diào)用自身的方法,這種技術(shù)在許多算法中都有應(yīng)用,本文將探討兩個經(jīng)典的例子,階乘計算和快速排序,階乘計算階乘是一種數(shù)學(xué)運(yùn)算,它將一個正整數(shù)乘以其所有較小的正整數(shù),例如,5的階乘,記為5,等于120,因為它等于5x4x3x2x1,我們可以使用遞歸函數(shù)來計算階乘,基本情況是當(dāng)n為1時,階乘為1,遞歸情況是當(dāng)n大于1時...。
技術(shù)教程 2024-09-07 11:51:46
織夢網(wǎng)站管理系統(tǒng),DedeCMS,是中國最流行的內(nèi)容管理系統(tǒng)之一,它以強(qiáng)大的功能和豐富的插件庫而聞名,通過深入了解織夢網(wǎng)站源碼,我們可以掌握動態(tài)內(nèi)容管理系統(tǒng)的魔力,并創(chuàng)建出功能強(qiáng)大的網(wǎng)站,織夢網(wǎng)站源碼結(jié)構(gòu)織夢網(wǎng)站源碼主要由以下部分組成,應(yīng)用程序代碼,包含系統(tǒng)核心功能,如用戶管理、內(nèi)容管理和模板解析,數(shù)據(jù)庫文件,存儲網(wǎng)站數(shù)據(jù),如內(nèi)容、用...。
最新資訊 2024-09-05 13:36:53
在浩瀚的宇宙中,存在著無數(shù)未解之謎,激發(fā)著人類的探索欲望,從廣袤無垠的星海到神秘莫測的人體,從科學(xué)前沿的突破到人類文明的起源,這些不解之謎不斷挑戰(zhàn)著我們對世界的認(rèn)知,宇宙的奧秘宇宙的起源與命運(yùn),大爆炸理論解釋了宇宙的誕生,但宇宙最初的形態(tài)和其最終歸宿仍是謎團(tuán),暗物質(zhì)和暗能量,科學(xué)家推測宇宙中存在著大量的暗物質(zhì)和暗能量,但它們的性質(zhì)和作...。
互聯(lián)網(wǎng)資訊 2024-09-05 00:04:46