一个优化的SQL:
SELECT order_date,
order_source,
SUM(commodity_num) num,
SUM(actual_charge) charge
FROM (
SELECT to_char(oc.create_date, 'yyyyMMdd') AS order_date,
(CASE
WHEN oo.event_type = 'ONLINE_COMMODITY_ORDER' THEN
'线上'
ELSE
'线下'
END) order_source,
oc.commodity_num,
oc.actual_charge actual_charge
FROM ord.ord_commodity_hb_2017 AS oc, ord.ord_order_hb_2017 AS oo
WHERE oc.order_id = oo.order_id
AND oc.op_type = 3 -- 3个值 ,3->5000 大概1/20的数据
AND oc.create_date BETWEEN '2017-02-05' AND '2017-12-07' -- 无用
AND oc.corp_org_id = 106 -- 无用
AND oo.trade_state = 11 -- 3个值 11 --> 71万行,一半数据
AND oo.event_type IN (values('ONLINE_COMMODITY_ORDER'),
('USER_CANCEL'),
('USER_COMMODITY_UPDATE')) -- 大概1/10 数据
ORDER BY oc.create_date -- 如果业务不强制,最好去掉排序,如果不能去掉,最好等过滤数据量到尽量小时再排序
) T
GROUP BY order_date, order_source;
下面默认以postgresql为例:
一、排序:
1. 尽量避免
2. 排序的数据量尽量少,并保证在内存里完成排序。
(至于具体什么数据量能在内存中完成排序,不同数据库有不同的配置:
oracle是sort_area_size;
postgresql是work_mem (integer),单位是KB,默认值是4MB。
mysql是sort_buffer_size 注意:该参数对应的分配内存是每连接独占!
)
二、索引:
1. 过滤的数据量比较少,一般来说<20%,应该走索引。20%-40% 可能走索引也可能不走索引。> 40% ,基本不走索引(会全表扫描)
2. 保证值的数据类型和字段数据类型要一直。
3. 对索引的字段进行计算时,必须在运算符右侧进行计算。也就是 to_char(oc.create_date, 'yyyyMMdd')是没用的
4. 表字段之间关联,尽量给相关字段上添加索引。
5. 复合索引,遵从最左前缀的原则,即最左优先。(单独右侧字段查询没有索引的)
三、连接查询方式:
1、hash join
放内存里进行关联。
适用于结果集比较大的情况。
比如都是200000数据
2、nest loop
从结果1 逐行取出,然后与结果集2进行匹配。
适用于两个结果集,其中一个数据量远大于另外一个时。
结果集一:1000
结果集二:1000000
四、多表联查时:
在多表联查时,需要考虑连接顺序问题。
1、当postgresql中进行查询时,如果多表是通过逗号,而不是join连接,那么连接顺序是多表的笛卡尔积中取最优的。如果有太多输入的表, PostgreSQL规划器将从穷举搜索切换为基因概率搜索,以减少可能性数目(样本空间)。基因搜索花的时间少, 但是并不一定能找到最好的规划。
2、对于JOIN,
LEFT JOIN / RIGHT JOIN 会一定程度上指定连接顺序,但是还是会在某种程度上重新排列:
FULL JOIN 完全强制连接顺序。
如果要强制规划器遵循准确的JOIN连接顺序,我们可以把运行时参数join_collapse_limit设置为 1
五、PostgreSQL提供了一些性能调优的功能:
优化思路:
0、为每个表执行 ANALYZE
。然后分析 EXPLAIN (ANALYZE,BUFFERS) sql。
1、对于多表查询,查看每张表数据,然后改进连接顺序。
2、先查找那部分是重点语句,比如上面SQL,外面的嵌套层对于优化来说没有意义,可以去掉。
3、查看语句中,where等条件子句,每个字段能过滤的效率。找出可优化处。
比如oc.order_id = oo.order_id是关联条件,需要加索引
oc.op_type = 3 能过滤出1/20的数据,
oo.event_type IN (...) 能过滤出1/10的数据,
这两个是优化的重点,也就是实现确保op_type与event_type已经加了索引,其次确保索引用到了。
优化方案:
a) 整体优化:
1、使用EXPLAIN
EXPLAIN命令可以查看执行计划,这个方法是我们最主要的调试工具。
2、及时更新执行计划中使用的统计信息
由于统计信息不是每次操作数据库都进行更新的,一般是在 VACUUM 、 ANALYZE 、 CREATE INDEX等DDL执行的时候会更新统计信息,
因此执行计划所用的统计信息很有可能比较旧。 这样执行计划的分析结果可能误差会变大。
以下是表tenk1的相关的一部分统计信息。
SELECT relname, relkind, reltuples, relpages
FROM pg_class
WHERE relname LIKE 'tenk1%';
relname | relkind | reltuples | relpages
----------------------+---------+-----------+----------
tenk1 | r | 10000 | 358
tenk1_hundred | i | 10000 | 30
tenk1_thous_tenthous | i | 10000 | 30
tenk1_unique1 | i | 10000 | 30
tenk1_unique2 | i | 10000 | 30
(5 rows)
其中 relkind是类型,r是自身表,i是索引index;reltuples是项目数;relpages是所占硬盘的块数。
估计成本通过 (磁盘页面读取【relpages】*seq_page_cost)+(行扫描【reltuples】*cpu_tuple_cost)计算。
默认情况下, seq_page_cost是1.0,cpu_tuple_cost是0.01。
名字
类型
描述
relpages
int4
以页(大小为BLCKSZ)的此表在磁盘上的形式的大小。 它只是规划器用的一个近似值,是由VACUUM,ANALYZE 和几个 DDL 命令,比如CREATE INDEX更新。
reltuples
float4
表中行的数目。只是规划器使用的一个估计值,由VACUUM,ANALYZE 和几个 DDL 命令,比如CREATE INDEX更新。
3、使用临时表(with)
对于数据量大,且无法有效优化时,可以使用临时表来过滤数据,降低数据数量级。
4、对于会影响结果的分析,可以使用 begin;...rollback;来回滚。
b) 查询优化:
1、明确用join来关联表,确保连接顺序
一般写法:SELECT * FROM a, b, c WHERE a.id = b.id AND b.ref = c.id;
如果明确用join的话,执行时候执行计划相对容易控制一些。
例子:
SELECT * FROM a CROSS JOIN b CROSS JOIN c WHERE a.id = b.id AND b.ref = c.id;
SELECT * FROM a JOIN (b JOIN c ON (b.ref = c.id)) ON (a.id = b.id);
c) 插入更新优化
1、关闭自动提交(autocommit=false)
如果有多条数据库插入或更新等,最好关闭自动提交,这样能提高效率
2、多次插入数据用copy命令更高效
我们有的处理中要对同一张表执行很多次insert操作。这个时候我们用copy命令更有效率。因为insert一次,其相关的index都要做一次,比较花费时间。
3、临时删除index【具体可以查看Navicat表数据生成sql的语句,就是先删再建的】
有时候我们在备份和重新导入数据的时候,如果数据量很大的话,要好几个小时才能完成。这个时候可以先把index删除掉。导入后再建index。
4、外键关联的删除
如果表的有外键的话,每次操作都没去check外键整合性。因此比较慢。数据导入后再建立外键也是一种选择。
d) 修改参数:
选项
默认值
说明
是否优化
原因
max_connections
100
允许客户端连接的最大数目
否
因为在测试的过程中,100个连接已经足够
fsync
on
强制把数据同步更新到磁盘
是
因为系统的IO压力很大,为了更好的测试其他配置的影响,把改参数改为off
shared_buffers
24MB
决定有多少内存可以被PostgreSQL用于缓存数据(推荐内存的1/4)
是
在IO压力很大的情况下,提高该值可以减少IO
work_mem
1MB
使内部排序和一些复杂的查询都在这个buffer中完成
是
有助提高排序等操作的速度,并且减低IO
effective_cache_size
128MB
优化器假设一个查询可以用的最大内存,和shared_buffers无关(推荐内存的1/2)
是
设置稍大,优化器更倾向使用索引扫描而不是顺序扫描
maintenance_work_mem
16MB
这里定义的内存只是被VACUUM等耗费资源较多的命令调用时使用
是
把该值调大,能加快命令的执行
wal_buffer
768kB
日志缓存区的大小
是
可以降低IO,如果遇上比较多的并发短事务,应该和commit_delay一起用
checkpoint_segments
3
设置wal log的最大数量数(一个log的大小为16M)
是
默认的48M的缓存是一个严重的瓶颈,基本上都要设置为10以上
checkpoint_completion_target
0.5
表示checkpoint的完成时间要在两个checkpoint间隔时间的N%内完成
是
能降低平均写入的开销
commit_delay
0
事务提交后,日志写到wal log上到wal_buffer写入到磁盘的时间间隔。需要配合commit_sibling
是
能够一次写入多个事务,减少IO,提高性能
commit_siblings
5
设置触发commit_delay的并发事务数,根据并发事务多少来配置
是
减少IO,提高性能
autovacuum_naptime
1min
下一次vacuum任务的时间
是
提高这个间隔时间,使他不是太频繁
autovacuum_analyze_threshold
50
与autovacuum_analyze_scale_factor配合使用,来决定是否analyze
是
使analyze的频率符合实际
autovacuum_analyze_scale_factor
0.1
当update,insert,delete的tuples数量超过autovacuum_analyze_scale_factor*table_size+autovacuum_analyze_threshold时,进行analyze。
是
使analyze的频率符合实际
下面介绍几个我认为重要的:
1、增加maintenance_work_mem参数大小
增加这个参数可以提升CREATE INDEX和ALTER TABLE ADD FOREIGN KEY的执行效率。
2、增加checkpoint_segments参数的大小
增加这个参数可以提升大量数据导入时候的速度。
3、设置archive_mode无效
这个参数设置为无效的时候,能够提升以下的操作的速度
・CREATE TABLE AS SELECT
・CREATE INDEX
・ALTER TABLE SET TABLESPACE
・CLUSTER等。
4、autovacuum相关参数
autovacuum :默认为on,表示是否开起autovacuum。默认开起。特别的,当需要冻结xid时,尽管此值为off,PG也会进行vacuum。
autovacuum_naptime :下一次vacuum的时间,默认1min。 这个naptime会被vacuum launcher分配到每个DB上。autovacuum_naptime/num of db。
log_autovacuum_min_duration:记录autovacuum动作到日志文件,当vacuum动作超过此值时。 “-1”表示不记录。“0”表示每次都记录。
autovacuum_max_workers :最大同时运行的worker数量,不包含launcher本身。
autovacuum_work_mem :每个worker可使用的最大内存数。
autovacuum_vacuum_threshold :默认50。与autovacuum_vacuum_scale_factor配合使用, autovacuum_vacuum_scale_factor默认值为20%。当update,delete的tuples数量超过autovacuum_vacuum_scale_factor*table_size+autovacuum_vacuum_threshold时,进行vacuum。如果要使vacuum工作勤奋点,则将此值改小。
autovacuum_analyze_threshold :默认50。与autovacuum_analyze_scale_factor配合使用。
autovacuum_analyze_scale_factor : 默认10%。当update,insert,delete的tuples数量超过autovacuum_analyze_scale_factor*table_size+autovacuum_analyze_threshold时,进行analyze。
autovacuum_freeze_max_age :200 million。离下一次进行xid冻结的最大事务数。
autovacuum_multixact_freeze_max_age :400 million。离下一次进行xid冻结的最大事务数。
autovacuum_vacuum_cost_delay :如果为-1,取vacuum_cost_delay值。
autovacuum_vacuum_cost_limit :如果为-1,到vacuum_cost_limit的值,这个值是所有worker的累加值。
你可能感兴趣的:(PostgreSQL,postgresql)
免费版 Navicat Premium Lite 17 下载和使用
曼巴不黑
数据库 navicat navicat免费
>>>>>>下载地址以后不需要再为使用Navicat大费周章了,官网已经提供免费版供个人和初创企业使用,认准NavicatPremiumLite。NavicatPremiumLite是Navicat的精简版,它包含了用户执行主要的基本数据库操作所需的核心功能。它允许你同时连接到各种数据库平台,包括MySQL、PostgreSQL、SQLServer、Oracle、MariaDB、Snowflake
PostgreSQL日志配置全解析:从基础设置到进阶策略
今天有朋友问了一个问题,是关于postgresql归档日志暴增,导致数据盘慢,业务异常的问题。在数据库管理中,日志是排查问题、审计操作、优化性能的重要依据。PostgreSQL提供了灵活且强大的日志配置功能,通过合理设置参数,既能满足审计需求,又能平衡系统性能。本文将详细解析PostgreSQL日志配置的核心参数、轮转策略、审计级别及进阶技巧,帮助数据库管理员构建高效的日志管理体系。一、日志配置基
Python, C ++开发冷冻食品供应链管理app
Geeker-2025
python c++
开发一款用于**冷冻食品供应链管理**的App,结合Python和C++的优势,可以实现高效的后端数据处理、实时的供应链监控以及用户友好的前端界面。以下是一个详细的开发方案,涵盖技术选型、功能模块、开发步骤等内容。##技术选型###后端(Python)-**编程语言**:Python-**Web框架**:Django或Flask-**数据库**:PostgreSQL或MySQL-**实时通信**:
Django ORM bulk_create MySQL 冲突处理深度解析:`bulk_create` 替代方案与最佳实践
MySQL不直接支持bulk_create的ignore_conflicts和update_conflicts参数。这些功能是PostgreSQL和SQLite特有的扩展。下面我将详细解释MySQL中的替代方案:一、MySQL不支持冲突处理参数的原因技术限制SQL标准差异:PostgreSQL/SQLite使用ONCONFLICT子句MySQL使用ONDUPLICATEKEYUPDATE语法不兼容
数据库管理工具Navicat Premium 12
mythmayor
Tools 数据库 数据库管理工具 数据库管理 Navicat Premium Navicat
转载请注明出处:https://blog.csdn.net/mythmayor/article/details/89560919NavicatPremium是一套多连接数据库开发工具,让你在单一应用程序中同时连接多达七种数据库:MySQL、MariaDB、MongoDB、SQLServer、SQLite、Oracle和PostgreSQL,可一次快速方便地访问所有数据库。安装包及破解教程下载:已将
IntelliJ IDEA 高效开发指南:从基础操作到高级技巧
zqmgx13291
intellij-idea java ide
一、IDEA概述与环境配置1.1IDEA的核心优势智能代码辅助:基于上下文的代码补全(Ctrl+Space)、方法参数提示、错误实时检测全栈开发支持:内置Java/Python/JavaScript等20+语言支持,框架集成(SpringBoot/Vue/React)工具链集成:版本控制(Git/SVN)、数据库(MySQL/PostgreSQL)、容器(Docker/K8s)一站式开发性能优化:
深入详解K近邻算法(KNN):基本概念、原理及在医学影像领域的应用与实现
猿享天开
近邻算法 算法 医学影像 人工智能 机器学习 大模型
博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++,C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQLserver,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,
机器学习模型评估:交叉验证、混淆矩阵、ROC曲线及其在医学影像领域的应用
猿享天开
机器学习 矩阵 人工智能 DICOM医学影像 模型评估
博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++,C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQLserver,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,
PostgreSQL LIKE 子句
嘀嗒运维
在PostgreSQL数据库中,我们如果要获取包含某些字符的数据,可以使用LIKE子句。在LIKE子句中,通常与通配符结合使用,通配符表示任意字符,在PostgreSQL中,主要有以下两种通配符:百分号%下划线_如果没有使用以上两种通配符,LIKE子句和等号=得到的结果是一样的。语法以下是使用LIKE子句搭配百分号%和下划线_从数据库中获取数据的通用语法:SELECTFROMtable_nameW
pandas 读取sqlserver_Python中pandas函数操作数据库
将pandas的DataFrame数据写入MySQL+sqlalchemypython强大的处理数据的能力很大一部分来自Pandas,pandas不仅限于读取本地的离线文件,也可以在线读取数据库的数据,处理后再写回数据库中。pandas主要是以sqlalchemy方式与数据库建立链接,支持Mysql、postgresql、Oracle、MSSQLServer、SQLite等主流数据库。一:创建链接
MYSQL 知识点总结
代码o>_
mysql 数据库 nosql
第一章MYSQL基础数据库(database)是一个按照结构来组织存储和管理数据的仓库一般由软件,数据库和管理员组成。数据模型:数据库由层次,网状,关系,面向对象,NOSQL五个模型组成数据库系统:一般由软件,数据库和管理员组成。当前主流的数据库:MySQL,Oracle,SQLServer,PostgreSQL,MongoDB,Redis当前使用较多是MySQL,版本为5.7MySQL的特点:运
【postgresql数据库创建符合索引】
haokan_Jia
postgresql JAVA 数据库 postgresql oracle
这里写自定义目录标题简单的sql语句执行速度很慢示例SQL语句:优化方案:简单的sql语句执行速度很慢数据库表数据量很大,执行简单的sql查询,查询速度很慢,如何进行速度优化?最直接有效的方法是对数据库表,创建索引,从而加快查询速度。示例SQL语句:库表中数据量:8022033条(八百万余条数据)执行以下sql需要5s。SELECTMAX(pubtime)FROMst_pptn_r_forecas
Postgresql数据库Java中mybatis问题记录
haokan_Jia
postgresql JAVA 数据库 postgresql java
项目场景:Java中使用mybatis进行数据查询,使用实体类接收报错“Errorattemptingtogetcolumn‘basin_code’fromresultset.Cause:org.postgresql.util.PSQLException:不良的类型值long:WFG_1\n;不良的类型值long:WFG_1;nestedexceptionisorg.postgresql.util
MYSQL面试题汇总(建以Mark!!)
1.什么是MySQL?它与其他数据库(如Oracle、PostgreSQL)有何不同?答案:MySQL是一个开源的关系型数据库管理系统(RDBMS),使用SQL管理数据,广泛用于Web应用,因其性能高、易用和可扩展性强而受欢迎。与Oracle对比:MySQL开源免费,适合中小型应用;Oracle是商业数据库,功能强大,适合大型企业系统。与PostgreSQL对比:PostgreSQL支持复杂数据类
PostgreSQL入门笔记250718
kfepiza
Database数据库 sql 关系型 非关系型 nosql postgresql 笔记 数据库
PostgreSQL入门笔记250718PostgreSQL介绍PostgreSQL(简称Postgres)是一款功能极其强大且开源的对象-关系型数据库管理系统(ORDBMS)。它以可靠性、功能丰富、性能卓越和扩展性而闻名,是许多关键业务应用、地理信息系统(GIS)、数据分析平台等的首选数据库。以下是对PostgreSQL的详细解析:核心特性与优势开源与自由:遵循PostgreSQL许可证(类似B
Lua(数据库访问)
慢慢沉
Lua lua 数据库 开发语言
Lua数据库访问方法Lua本身不提供内置的数据库访问功能,但可以通过第三方库实现与多种数据库的交互。以下是常见的Lua数据库访问方法:使用LuaSQL库LuaSQL是一个轻量级数据库访问库,支持多种数据库后端(MySQL、PostgreSQL、SQLite、ODBC等)。安装方式:luarocksinstallluasql-mysql#MySQLluarocksinstallluasql-sqli
Mysql 间隙锁原理,以及 Repeatable Read 隔离级别下可以防止幻读原理
Mysql知识实在太丰富了,前几天百度的面试官问我MySql在RepeatableRead下面是否会有幻读出现,我说按照事务的特性当然会有,但是面试官却说Mysql在RepeatableRead底下也不会发生幻读的情况,因为Mysql有间隙锁的可以防止幻读;我一头雾水,啥叫间隙锁。以下就是Mysql如何利用间隙锁防止幻读的总结:我们都知道Mysql,OraclePostgreSQL可以利用MVCC
PostgreSQL 源码解读(88)- 查询语句#73(SeqNext函数#1)
EthanHe
本节介绍了SeqNext函数的主要实现逻辑以及该函数中初始化相关数据结构的实现逻辑。SeqNext函数作为参数传递到函数ExecScan中,执行实际的扫描操作。一、数据结构TupleTableSlotTupleTableSlot,用于存储元组相关信息/*basetupletableslottype*/typedefstructTupleTableSlot{NodeTagtype;//Node标记#
linux-日志服务
Code Rhythm
Linux linux 运维 服务器
linux-日志服务一、rsyslog1.配置文件2.消息级别3.设备类型二、日志轮转1.主配置文件2.配置日志轮转功能3.结合cron使用总结一、rsyslogrsyslog是Linux/Unix系统上的一款高性能、模块化的日志管理服务,用于收集、处理、过滤和转发系统日志及应用程序日志。支持多种协议(如TCP/UDP/TLS)、数据库存储(MySQL/PostgreSQL)、远程日志转发等高级功
在Docker容器中修改PostgresSQL最大连接数
itzixiao
SQL docker postgresql 数据库
在Docker容器中修改PostgresSQL最大连接数目录在Docker容器中修改PostgresSQL最大连接数1.首先查询当前最大连接数2.然后找到你的postgresql.conf文件3.修改配置文件4.然后重启postgres服务附Postgres中常用sql命令解决bash:vim:commandnotfound1.首先查询当前最大连接数--查看最大连接数showmax_connect
【PGCCC】PostgreSQL 18 Beta 1发布,有哪些亮点?
PGCCC-PostgeSQL培训认证
postgresql 数据库
PostgreSQL全球开发组于2025年5月8日发布了第一个PostgreSQL18Beta版本,现已开放下载。虽然细节可能会有所改变,但是该版本包含了PostgreSQL18最终正式版中所有新功能的预览。以下是PostgreSQL18引入的部分关键功能亮点。性能优化异步I/O(AIO),通过全新的异步I/O子系统提升I/O吞吐量并隐藏延迟。Linux系统可使用io_uring,其他平台则提供基
如何选择数据库?从真实案例看 PostgreSQL 与 MySQL 的优劣权衡
关系型数据库是几乎所有互联网应用的基础。在众多开源选项中,PostgreSQL和MySQL是最常被拿来对比的一对“老对手”。虽然它们都讲SQL,但在设计哲学、性能表现和功能特性上差异明显。本篇文章结合了包括Uber在内的实际案例、AI辅助建模的开发经验,并推荐一些实际工具,帮助开发者更清晰地做出技术选型。为什么数据库选型至关重要?数据库并不是“越强越好”,关键在于是否匹配你项目的业务模型、数据访问
How to install and setup PostgreSQL on Ubuntu?
1.InstallationStepsforPostgreSQLonUbuntu1.1UpdatethePackageListOpenaterminalandrunthefollowingcommandtoensureyourpackagelistisup-to-date:sudoaptupdate1.2InstallPostgreSQLUsethefollowingcommandtoinstal
生产环境PostgreSQL逻辑复制与高可用架构实战经验分享
浅沫云归
后端技术栈小结 PostgreSQL 逻辑复制 高可用
生产环境PostgreSQL逻辑复制与高可用架构实战经验分享在大规模业务场景中,数据可靠性与可用性至关重要。本文结合真实生产环境案例,分享基于PostgreSQL逻辑复制(LogicalReplication)与流复制(StreamingReplication)建设高可用架构的全流程,包括选型、部署、故障切换与优化思考,为有一定数据库运维和后端基础的读者提供可落地的实战经验。一、业务场景描述业务特
postgresql之语法解析 浅析
happytree001
pg postgresql
一、pg语法简介1.1语法文件结构语法.y文件和词法.l文件结构差不多,也是通过%%分成了三个部分:声明部分、语法规则部分、C代码部分。src/backend/parser/gram.y####声明部分%{C代码头文件,变量声明等(此范围内的内容原样输出到文件中)#include"postgres.h"...%}#变量声明%union{core_YYSTYPEcore_yystype;/*thes
PostgreSQL 语法详解
沐知全栈开发
开发语言
PostgreSQL语法详解引言PostgreSQL是一款功能强大的开源对象关系型数据库管理系统(ORDBMS),广泛应用于各种规模的组织中。其丰富的功能和灵活性使得它成为了众多数据库开发者和运维人员的首选。本文将详细介绍PostgreSQL的语法,帮助读者快速掌握其基本操作。1.数据库连接在操作PostgreSQL之前,首先需要连接到数据库。以下是一个使用PostgreSQL客户端连接到本地数据
【PostgreSQL】【第1章】入门&安装
cherry5230
数据库专栏 postgresql 数据库
1-PostgreSQL入门&安装1.今日安排核心内容:PostgreSQL简介与适用场景PostgreSQLvsMySQL核心差异Linux环境安装(非Docker)远程连接与日志配置基本操作:用户、数据库、权限管理2.PostgreSQL介绍2.1核心特性开源协议:基于BSD/MIT协议,支持二次封装商业化。版本选择:稳定版:12.x新特性版:14.x社区活跃:版本迭代快(约3个月一次),Bu
sqoop从mysql导数据到hdfs,出现java.lang.ClassNotFoundException: Class QueryResult not found
无级程序员
大数据 sqoop mysql hdfs
运行sqoop从postgresql/mysql导入数据到hdfs,结果出现如下错误:2025-07-1816:59:13,624INFOorm.CompilationManager:HADOOP_MAPRED_HOMEis/opt/datasophon/hadoop-3.3.3Note:/opt/sqoop/bin/QueryResult.javausesoroverridesadeprecat
使用 Amazon RDS Proxy 提升应用程序可用性
AmazonRDSProxy的最大优势,在于显著缩短数据库故障转移之后的应用程序恢复时间。RDSProxy能够同时支持MySQL与PostgreSQL引擎,但在本文中,我们将单纯使用MySQL测试工作负载向大家展示RDSProxy如何在故障转移之后,将AmazonAuroraMySQL客户端的恢复时间缩短达79%,并将AmazonRDSforMySQL的故障恢复时间缩短达32%。本文还将阐述RDS
Python Django 数据库索引优化
Python编程之道
python django 数据库 ai
PythonDjango数据库索引优化关键词:DjangoORM、数据库索引、查询优化、性能调优、PostgreSQL、MySQL、执行计划摘要:本文深入探讨Django框架中的数据库索引优化策略。我们将从数据库索引的基本原理出发,详细分析DjangoORM如何生成SQL查询,以及如何通过合理的索引设计提升查询性能。文章包含索引类型选择、复合索引优化、Django模型字段索引配置、查询集优化技巧等
Java实现的简单双向Map,支持重复Value
superlxw1234
java 双向map
关键字:Java双向Map、DualHashBidiMap
有个需求,需要根据即时修改Map结构中的Value值,比如,将Map中所有value=V1的记录改成value=V2,key保持不变。
数据量比较大,遍历Map性能太差,这就需要根据Value先找到Key,然后去修改。
即:既要根据Key找Value,又要根据Value
PL/SQL触发器基础及例子
百合不是茶
oracle数据库 触发器 PL/SQL编程
触发器的简介;
触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。触发器和过程函数类似 过程函数必须要调用,
一个表中最多只能有12个触发器类型的,触发器和过程函数相似 触发器不需要调用直接执行,
触发时间:指明触发器何时执行,该值可取:
before:表示在数据库动作之前触发
[时空与探索]穿越时空的一些问题
comsci
问题
我们还没有进行过任何数学形式上的证明,仅仅是一个猜想.....
这个猜想就是; 任何有质量的物体(哪怕只有一微克)都不可能穿越时空,该物体强行穿越时空的时候,物体的质量会与时空粒子产生反应,物体会变成暗物质,也就是说,任何物体穿越时空会变成暗物质..(暗物质就我的理
easy ui datagrid上移下移一行
商人shang
js 上移下移 easyui datagrid
/**
* 向上移动一行
*
* @param dg
* @param row
*/
function moveupRow(dg, row) {
var datagrid = $(dg);
var index = datagrid.datagrid("getRowIndex", row);
if (isFirstRow(dg, row)) {
Java反射
oloz
反射
本人菜鸟,今天恰好有时间,写写博客,总结复习一下java反射方面的知识,欢迎大家探讨交流学习指教
首先看看java中的Class
package demo;
public class ClassTest {
/*先了解java中的Class*/
public static void main(String[] args) {
//任何一个类都
springMVC 使用JSR-303 Validation验证
杨白白
spring mvc
JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的,通过此这个实现来讲SpringMVC对JSR-303的支持。
JSR-303的校验是基于注解的,首先要把这些注解标记在需要验证的实体类的属性上或是其对应的get方法上。
登录需要验证类
public class Login {
@NotEmpty
log4j
香水浓
log4j
log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, HTML, DATABASE
#log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, ROLLINGFILE, HTML
#console
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4
使用ajax和history.pushState无刷新改变页面URL
agevs
jquery 框架 Ajax html5 chrome
表现
如果你使用chrome或者firefox等浏览器访问本博客、github.com、plus.google.com等网站时,细心的你会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变。并且能够很好的支持浏览器前进和后退。
是什么有这么强大的功能呢?
HTML5里引用了新的API,history.pushState和history.replaceState,就是通过
centos中文乱码
AILIKES
centos OS ssh
一、CentOS系统访问 g.cn ,发现中文乱码。
于是用以前的方式:yum -y install fonts-chinese
CentOS系统安装后,还是不能显示中文字体。我使用 gedit 编辑源码,其中文注释也为乱码。
后来,终于找到以下方法可以解决,需要两个中文支持的包:
fonts-chinese-3.02-12.
触发器
baalwolf
触发器
触发器(trigger):监视某种情况,并触发某种操作。
触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)
语法:
create trigger triggerName
after/before 
JS正则表达式的i m g
bijian1013
JavaScript 正则表达式
g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。 i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写。 m:表示
HTML5模式和Hashbang模式
bijian1013
JavaScript AngularJS Hashbang模式 HTML5模式
我们可以用$locationProvider来配置$location服务(可以采用注入的方式,就像AngularJS中其他所有东西一样)。这里provider的两个参数很有意思,介绍如下。
html5Mode
一个布尔值,标识$location服务是否运行在HTML5模式下。
ha
[Maven学习笔记六]Maven生命周期
bit1129
maven
从mvn test的输出开始说起
当我们在user-core中执行mvn test时,执行的输出如下:
/software/devsoftware/jdk1.7.0_55/bin/java -Dmaven.home=/software/devsoftware/apache-maven-3.2.1 -Dclassworlds.conf=/software/devs
【Hadoop七】基于Yarn的Hadoop Map Reduce容错
bit1129
hadoop
运行于Yarn的Map Reduce作业,可能发生失败的点包括
Task Failure
Application Master Failure
Node Manager Failure
Resource Manager Failure
1. Task Failure
任务执行过程中产生的异常和JVM的意外终止会汇报给Application Master。僵死的任务也会被A
记一次数据推送的异常解决端口解决
ronin47
记一次数据推送的异常解决
需求:从db获取数据然后推送到B
程序开发完成,上jboss,刚开始报了很多错,逐一解决,可最后显示连接不到数据库。机房的同事说可以ping 通。
自已画了个图,逐一排除,把linux 防火墙 和 setenforce 设置最低。
service iptables stop
巧用视错觉-UI更有趣
brotherlamp
UI ui视频 ui教程 ui自学 ui资料
我们每个人在生活中都曾感受过视错觉(optical illusion)的魅力。
视错觉现象是双眼跟我们开的一个玩笑,而我们往往还心甘情愿地接受我们看到的假象。其实不止如此,视觉错现象的背后还有一个重要的科学原理——格式塔原理。
格式塔原理解释了人们如何以视觉方式感觉物体,以及图像的结构,视角,大小等要素是如何影响我们的视觉的。
在下面这篇文章中,我们首先会简单介绍一下格式塔原理中的基本概念,
线段树-poj1177-N个矩形求边长(离散化+扫描线)
bylijinnan
数据结构 算法 线段树
package com.ljn.base;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
/**
* POJ 1177 (线段树+离散化+扫描线),题目链接为http://poj.org/problem?id=1177
HTTP协议详解
chicony
http协议
引言
Scala设计模式
chenchao051
设计模式 scala
Scala设计模式
我的话: 在国外网站上看到一篇文章,里面详细描述了很多设计模式,并且用Java及Scala两种语言描述,清晰的让我们看到各种常规的设计模式,在Scala中是如何在语言特性层面直接支持的。基于文章很nice,我利用今天的空闲时间将其翻译,希望大家能一起学习,讨论。翻译
安装mysql
daizj
mysql 安装
安装mysql
(1)删除linux上已经安装的mysql相关库信息。rpm -e xxxxxxx --nodeps (强制删除)
执行命令rpm -qa |grep mysql 检查是否删除干净
(2)执行命令 rpm -i MySQL-server-5.5.31-2.el
HTTP状态码大全
dcj3sjt126com
http状态码
完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅。HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持 HTTP 1.0。你应只把状态码发送给支持 HTTP 1.1的客户端,支持协议版本可以通过调用request
asihttprequest上传图片
dcj3sjt126com
ASIHTTPRequest
NSURL *url =@"yourURL";
ASIFormDataRequest*currentRequest =[ASIFormDataRequest requestWithURL:url];
[currentRequest setPostFormat:ASIMultipartFormDataPostFormat];[currentRequest se
C语言中,关键字static的作用
e200702084
C++ c C#
在C语言中,关键字static有三个明显的作用:
1)在函数体,局部的static变量。生存期为程序的整个生命周期,(它存活多长时间);作用域却在函数体内(它在什么地方能被访问(空间))。
一个被声明为静态的变量在这一函数被调用过程中维持其值不变。因为它分配在静态存储区,函数调用结束后并不释放单元,但是在其它的作用域的无法访问。当再次调用这个函数时,这个局部的静态变量还存活,而且用在它的访
win7/8使用curl
geeksun
win7
1. WIN7/8下要使用curl,需要下载curl-7.20.0-win64-ssl-sspi.zip和Win64OpenSSL_Light-1_0_2d.exe。 下载地址:
http://curl.haxx.se/download.html 请选择不带SSL的版本,否则还需要安装SSL的支持包 2. 可以给Windows增加c
Creating a Shared Repository; Users Sharing The Repository
hongtoushizi
git
转载自:
http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/ Commands discussed in this section:
git init –bare
git clone
git remote
git pull
git p
Java实现字符串反转的8种或9种方法
Josh_Persistence
异或反转 递归反转 二分交换反转 java字符串反转 栈反转
注:对于第7种使用异或的方式来实现字符串的反转,如果不太看得明白的,可以参照另一篇博客:
http://josh-persistence.iteye.com/blog/2205768
/**
*
*/
package com.wsheng.aggregator.algorithm.string;
import java.util.Stack;
/**
代码实现任意容量倒水问题
home198979
PHP 算法 倒水
形象化设计模式实战 HELLO!架构 redis命令源码解析
倒水问题:有两个杯子,一个A升,一个B升,水有无限多,现要求利用这两杯子装C
Druid datasource
zhb8015
druid
推荐大家使用数据库连接池 DruidDataSource. http://code.alibabatech.com/wiki/display/Druid/DruidDataSource DruidDataSource经过阿里巴巴数百个应用一年多生产环境运行验证,稳定可靠。 它最重要的特点是:监控、扩展和性能。 下载和Maven配置看这里: http
两种启动监听器ApplicationListener和ServletContextListener
spjich
java spring 框架
引言:有时候需要在项目初始化的时候进行一系列工作,比如初始化一个线程池,初始化配置文件,初始化缓存等等,这时候就需要用到启动监听器,下面分别介绍一下两种常用的项目启动监听器
ServletContextListener
特点: 依赖于sevlet容器,需要配置web.xml
使用方法:
public class StartListener implements
JavaScript Rounding Methods of the Math object
何不笑
JavaScript Math
The next group of methods has to do with rounding decimal values into integers. Three methods — Math.ceil(), Math.floor(), and Math.round() — handle rounding in differen