配置PostgreSQL對應(yīng)的yum源
10年積累的做網(wǎng)站、網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有姜堰免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
使用命令:dnf install -y ,獲取yum配置文件。
安裝PostgreSQL13對應(yīng)的rpm包
一般來說PostgreSQL需要安裝的包包括:
依賴庫包:postgresql13-libs.x86_64
模塊分布式:postgresql13-contrib.x86_64
客戶端:postgresql13.x86_64
服務(wù)端:postgresql13-server.x86_64
創(chuàng)建postgres用戶及組
groupadd postgres 創(chuàng)建postgres組
useradd -g postgres創(chuàng)建postgres用戶
初始化數(shù)據(jù)庫
安裝postgresql數(shù)據(jù)庫后,默認(rèn)的數(shù)據(jù)目錄為: /var/lib/pgsql/10/data/。但是在實際使用中,我們必須為postgresql數(shù)據(jù)庫指定專用的數(shù)據(jù)路徑。
1、創(chuàng)建指定路徑
mkdir -p /data/pgdata
2、修改pgdata的所有者
chown postgres /data/pgdata
3、切換到postgres用戶
su - postgres?
4、初始化postgres數(shù)據(jù)庫實例
/usr/pgsql-13/bin/initdb -D /data/pgdata
到這里就安裝完成了。
PostgreSQL 和 MySQL 是將數(shù)據(jù)組織成表的關(guān)系數(shù)據(jù)庫。這些表可以根據(jù)每個表共有的數(shù)據(jù)鏈接或關(guān)聯(lián)。關(guān)系數(shù)據(jù)庫使您的企業(yè)能夠更好地了解可用數(shù)據(jù)之間的關(guān)系,并幫助獲得新的見解以做出更好的決策或發(fā)現(xiàn)新的機(jī)會。
PostgreSQL 和 MySQL 都依賴于 SQL(結(jié)構(gòu)化查詢語言),這是與管理系統(tǒng)交互的標(biāo)準(zhǔn)語言。SQL 允許使用具有簡單結(jié)構(gòu)的幾行源代碼連接表,大多數(shù)非技術(shù)員工可以快速學(xué)習(xí)。
使用 SQL,分析師不需要知道訂單表在磁盤上的位置、如何執(zhí)行查找以查找特定訂單或如何連接訂單表和客戶表。數(shù)據(jù)庫編譯查詢并計算出正確的數(shù)據(jù)點。
MySQL 和 PostgreSQL 都支持 JavaScript Object Notation (JSON) 存儲和傳輸數(shù)據(jù),盡管 PostgreSQL 也支持 JSONB,這是 JSON 的二進(jìn)制版本,它消除了鍵的重復(fù)和無關(guān)的空格。
除了傳統(tǒng)的支持機(jī)制外,這兩個數(shù)據(jù)庫都提供強(qiáng)大的社區(qū)支持。
PostgreSQL,也稱為 Postgres,是一種開源關(guān)系數(shù)據(jù)庫,因其可靠性、靈活性和對開放技術(shù)標(biāo)準(zhǔn)的支持而享有盛譽。PostgreSQL 支持非關(guān)系和關(guān)系數(shù)據(jù)類型。它被稱為當(dāng)今可用的最兼容、最穩(wěn)定和最成熟的關(guān)系數(shù)據(jù)庫之一,并且可以輕松處理復(fù)雜的查詢。
PostgreSQL 的特性包括:
PostgreSQL 這是一個“一刀切”的解決方案,適用于許多尋求經(jīng)濟(jì)高效的方法來改進(jìn)其數(shù)據(jù)庫管理系統(tǒng) (DBMS) 的企業(yè)。它具有足夠的可擴(kuò)展性和多功能性,可以通過強(qiáng)大的擴(kuò)展生態(tài)系統(tǒng)快速支持各種專業(yè)用例,涵蓋時間序列數(shù)據(jù)類型和地理空間分析等工作。作為開源數(shù)據(jù)庫解決方案構(gòu)建的 PostgreSQL 完全不受許可限制、供應(yīng)商鎖定的可能性或過度部署的風(fēng)險。PostgreSQL 通過對象關(guān)系數(shù)據(jù)庫管理系統(tǒng) (ORDBMS) 進(jìn)行管理。
PostgreSQL 負(fù)責(zé)管理業(yè)務(wù)活動的在線事務(wù)處理 (OLTP)協(xié)議的企業(yè)數(shù)據(jù)庫管理員提供了理想的解決方案,包括電子商務(wù)、客戶關(guān)系管理系統(tǒng) (CRM) 和財務(wù)分類帳。它也是管理接收、創(chuàng)建和生成的數(shù)據(jù)分析的理想選擇。
這些是 PostgreSQL 的一些主要優(yōu)點:
MySQL — 一種快速、可靠、可擴(kuò)展且易于使用的開源關(guān)系數(shù)據(jù)庫系統(tǒng) — 旨在處理關(guān)鍵任務(wù)、高負(fù)載的生產(chǎn)應(yīng)用程序。它是一種常見且易于啟動的數(shù)據(jù)庫,內(nèi)存、磁盤和 CPU 利用率較低,有關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDMS) 管理。MySQL Community Edition 是一個由活躍的在線社區(qū)支持的免費下載版本。
MySQL 功能包括所有 SQL 標(biāo)準(zhǔn)命令以及事務(wù)和 ACID 合規(guī)性(代表原子性、一致性、隔離性和持久性)。
兩個最常見的關(guān)系數(shù)據(jù)庫是什么 MySQL 和 Oracle。MySQL 不是 SQL Server 的同義詞,SQL Server 是 Microsoft 許可產(chǎn)品,與 MAC OS X 缺乏兼容性。
MariaDB 經(jīng)常與 MySQL 混淆,它是 MySQL 的一個開源分支,速度更快,提供更多存儲引擎 (12),但功能有限。MySQL 和 MariaDB 使用的存儲引擎都是 InnoDB。InnoDB 提供標(biāo)準(zhǔn)的 ACID 兼容特性。與 MySQL 不同,MariaDB 不支持?jǐn)?shù)據(jù)屏蔽或動態(tài)列表。
MySQL 通常用作 Web 數(shù)據(jù)庫來存儲各種信息類型,從單個信息數(shù)據(jù)點到為組織提供的產(chǎn)品或服務(wù)的完整列表。它是LAMP(Linux 操作系統(tǒng)、Apache HTTP 服務(wù)器、MySQL RDBMS 和 PHP 編程語言)的基礎(chǔ)組件,這是一種有助于創(chuàng)建API、Web 應(yīng)用程序和網(wǎng)站的軟件堆棧模型。
MySQL Workbench 是一個單一的、集成的可視化 SQL 平臺,用于 MySQL 數(shù)據(jù)庫的創(chuàng)建、開發(fā)、設(shè)計和管理。
MySQL 為市場提供了許多好處,包括:
PostgreSQL 和 MySQL 之間有很多不同之處。特性、功能和優(yōu)勢方面的一些差異如下:
總之,PostgreSQL 和 MySQL 都有不同的用途,它們之間的選擇取決于企業(yè)目標(biāo)和資源。一般來說,PostgreSQL 是一個更強(qiáng)大、更高級的數(shù)據(jù)庫管理系統(tǒng),非常適合需要在大型環(huán)境中快速執(zhí)行復(fù)雜查詢的組織。但是,對于預(yù)算和空間更受限制的公司來說,MySQL 是一個理想的解決方案。
安裝postgresql-10的時候會報錯:
出現(xiàn)上述錯誤原因是系統(tǒng)自身未安裝libicu相關(guān)的包,根據(jù)系統(tǒng)提示安裝sysstat即可解決:
postgreSQL命令的詞法分析和語法分析是由Unix工具Yacc和Lex制作的。使用的是 Bison 和
Flex。
詞法分析和語法分析依賴的文件定義在src\backend\parser下的scan.l和gram.y。其中:
在raw_parser函數(shù)(在src/backend/parser/parser.c下)中,主要通過調(diào)用Lex和Yacc配合生成的base_yyparse函數(shù)來實現(xiàn)詞法分析和語法分析的工作。
其他的重要源碼文件:
輔助腳本:
SQL關(guān)鍵字定義及查找函數(shù)
SQL關(guān)鍵字列表
因為查找是采用二分查找法。如果添加關(guān)鍵字,需要保持name的順序。
在mysql中遇到依賴表a的數(shù)據(jù)來大量更新表b的數(shù)據(jù)時可以使用update join的語法
在postgresql也可以做到 語法和mysql有一些差別
這是postgresql的update語法
update中可以包含一個form子句 當(dāng)包含form子句時 where子句中需要指明update的表和form子句的關(guān)聯(lián)關(guān)系
例如:
employee:id name attendance_duration ...
attendance: employee_id duration date ...
將全部員工上月的出勤時間累加到employee表的attendance_duration中
update employee set attendance_duration=attendance_duration+t.ad
from (select sum(duration) from attendance where date... and date ... group by employee_id) as t
where employee.id =attendance.employee_id
利用這個特性配合case when等語法實現(xiàn)復(fù)雜業(yè)務(wù)邏輯 可以避免大量數(shù)據(jù)逐一更新
能極大提高update性能
DB version: PostgreSQL 12.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
OS: CentOS Linux release 7.7.1908 (Core)
roaringbitmap: roaringbitmap-0.5
roaringbitmap插件github地址:
作者github地址里的安裝過程寫的比較簡單,一路碰到不少坑,記錄下來供參考。
1.查看當(dāng)前安裝的pg,確保只有一個版本存在
2.確認(rèn)當(dāng)前環(huán)境變量配置
3.確認(rèn)postgres主機(jī)賬號已設(shè)置密碼
4.確認(rèn)postgres主機(jī)賬號已添加至sudoers文件中
1.安裝 llvm-toolset-7-clang = 4.0.1
2.安裝 llvm5.0-devel = 5.0
3.安裝postgresql12-devel
1.make (warning不用理會,沒有error即可)
2.make install(如果此步驟缺少后面的四行輸出則會遇到后面的報錯3)
見github地址
報錯1:未配置環(huán)境變量以及未安裝 postgresql12-devel 開發(fā)包
報錯2:未安裝依賴包 llvm5.0-devel = 5.0 和 llvm-toolset-7-clang = 4.0.1
報錯3.make install 步驟不完整導(dǎo)致報錯 Float8GetDatum