postgre数据库,为什么postgrelsql的性能没有mysql好
本篇文章给大家谈谈postgre数据库,以及为什么postgrelsql的性能没有mysql好对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
linux怎样导入postgre数据库
数据库的导出和导入很重要,一个网站什么比较值钱,就是数据,做好备份很重要。
1,查看一下原数据库
-bash-3.2$ psql-U playboy-d playboy//原数据库
Welcome to psql 8.1.23, the PostgreSQL interactive terminal.
type: copyright for distribution terms
h for help with SQL commands
? for help with psql commands
g or terminate with semicolon to execute query
q to quit
playboy=> dt;
List of relations
Schema| Name| Type| Owner
--------+------------+-------+---------
public| contents| table| playboy
public| entries| table| playboy
public| properties| table| playboy
public| settings| table| playboy
public| test| table| playboy
(5 rows)
playboy=> q
2,导出数据库和表
-bash-3.2$ pg_dump-O playboy>/var/lib/pgsql/data/playboy2013.sql//导出playboy数据库
-bash-3.2$ pg_dumpall>/var/lib/pgsql/data/all_databases2013.sql//导出全部数据库
-bash-3.2$ pg_dump-O playboy-Ft-t test>/var/lib/pgsql/data/playboy_test2013.tar//导出一张表.tar的文件供pg_restore
-bash-3.2$ ls/var/lib/pgsql/data|grep 2013//查看一下导好了
playboy2013.sql all_databases2013.sql playboy_test2013.tar
3,创建新数据库,并导入
-bash-3.2$ psql-U playboy-d playboy//原数据库
Welcome to psql 8.1.23, the PostgreSQL interactive terminal.
Type: copyright for distribution terms
h for help with SQL commands
? for help with psql commands
g or terminate with semicolon to execute query
q to quit
playboy=> dt;
List of relations
Schema| Name| Type| Owner
--------+------------+-------+---------
public| contents| table| playboy
public| entries| table| playboy
public| properties| table| playboy
public| settings| table| playboy
public| test| table| playboy
(5 rows)
playboy=> q
-bash-3.2$ createdb playboy_test-O playboy//创建一个归属playboy的数据库playboy_test
CREATE DATABASE
-bash-3.2$ pg_restore-d playboy_test/var/lib/pgsql/data/playboy_test2013.tar//导入单表,
//将上面导入表删除后,在把playboy的数据库导入到playboy_test中去,权限归属playboy
-bash-3.2$ psql-d playboy_test-U playboy-f/var/lib/pgsql/data/playboy2013.sql
set
SET
SET
COMMENT
SET
CREATE SEQUENCE
setval
--------
18
(1 row)
SET
SET
CREATE TABLE
CREATE SEQUENCE
setval
--------
4
(1 row)
CREATE TABLE
CREATE TABLE
CREATE SEQUENCE
setval
--------
3
(1 row)
CREATE TABLE
CREATE TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
CREATE INDEX
REVOKE
REVOKE
GRANT
GRANT
-bash-3.2$ psql-U playboy-d playboy_test//登录到playboy_test
Welcome to psql 8.1.23, the PostgreSQL interactive terminal.
Type: copyright for distribution terms
h for help with SQL commands
? for help with psql commands
g or terminate with semicolon to execute query
q to quit
playboy_test=> dt;//查看一下表,根playboy数据库一样的。
List of relations
Schema| Name| Type| Owner
--------+------------+-------+----------
public| contents| table| playboy
public| entries| table| playboy
public| properties| table| playboy
public| settings| table| playboy
public| test| table| playboy
(5 rows)
pgsql导入写法比较多,上面已经有二种了,在说一种
-bash-3.2$ psql-U playboy playboy_test</var/lib/pgsql/data/playboy2013.sql
什么是Postgres
PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。
为什么postgrelsql的性能没有mysql好
一、 PostgreSQL的稳定性极强, Innodb等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。
二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。
三、PG多年来在 GIS领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。
四、PG的“无锁定”特性非常突出,甚至包括 vacuum这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。
五、PG的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。
六、PG有极其强悍的 SQL编程能力(9.x图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差的很远,很多分析功能都不支持,腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL。
七、PG的有多种集群架构可以选择,plproxy可以支持语句级的镜像或分片,slony可以进行字段级的同步设置,standby可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。
八、一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT类型的功能受限,只能作为外部大数据访问。而 PG的 TEXT类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。
九,对于WEB应用来说,复制的特性很重要,mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。
十,pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因)
最后说一下我感觉 PG不如 MySQL的地方。
第一,MySQL有一些实用的运维支持,如 slow-query.log,这个pg肯定可以定制出来,但是如果可以配置使用就更好了。
第二是mysql的innodb引擎,可以充分优化利用系统所有内存,超大内存下PG对内存使用的不那么充分,
第三点,MySQL的复制可以用多级从库,但是在9.2之前,PGSQL不能用从库带从库。
第四点,从测试结果上看,mysql 5.5的性能提升很大,单机性能强于pgsql,5.6应该会强更多.
第五点,对于web应用来说,mysql 5.6的内置MC API功能很好用,PGSQL差一些。
另外一些:
pgsql和mysql都是背后有商业公司,而且都不是一个公司。大部分开发者,都是拿工资的。
说mysql的执行速度比pgsql快很多是不对的,速度接近,而且很多时候取决于你的配置。
对于存储过程,函数,视图之类的功能,现在两个数据库都可以支持了。
另外多线程架构和多进程架构之间没有绝对的好坏,oracle在unix上是多进程架构,在windows上是多线程架构。
很多pg应用也是24/7的应用,比如skype.最近几个版本VACUUM基本不影响PGSQL运行,8.0之后的PGSQL不需要cygwin就可以在windows上运行。
至于说对于事务的支持,mysql和pgsql都没有问题。
OK,本文到此结束,希望对大家有所帮助。