Druid数据库连接池的特点 稳定 高效率 可扩展 可监控 可动态配置 防SQL注入. 温绍锦(温高铁)

Slides:



Advertisements
Similar presentations
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Advertisements

JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例.
第十章 Java 数据库编程. 内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
PHP 训练营 - MySQL OA 产品部 李鑫辉 2011 年 9 月. 内容提要 & 目录 1. 介绍 (10 分钟 ) 1.1. 简介 1.2. 特点 1.3. 安装 2. 语法 (60 分钟 ) 2.1. 存储引擎 MyISAM InnoDB 特点与区别.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
主讲:史治平 地址:四川电大计算机教研室 电话:
第八讲 基于Hadoop的数据仓库Hive (PPT版本号:2016年4月6日版本)
欢迎各位同学!.
  中国技术交易信息服务平台 中国技术市场管理促进中心.
OceanBase 0.4:从API到SQL 日照
資料庫系統 曾俊雄.
配合< JSP程序设计>例子源代码一起使用
1.Oracle SQL 基础 Welcome! Rainny Zhong
資料庫 (Database) SQL Server 2008實作
第十一讲 JDBC JDBC基础 JDBC驱动程序 JDBC编程 示例.
导 师: 张 伟 答辩人: 王 雄 专 业: 计算机科学与技术
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
数据库原理及设计 --作业.
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
创建数据库 MySql创建数据库的语法: CREATE DATABASE 数据库名; 例: CREATE DATABASE mydb;
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
Oracle WebLogic 数据库连接原理及案例探讨
计算机应用基础 上海大学计算中心.
主机DB2数据库应用与编程 任课老师:王湖南 四川大学计算机(软件)学院.
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询
J2EE与中间件技术 ——Lab.
外观模式.
JAVA 程式設計與資料結構 第十一章 JDBC.
11-1 JDBC的基礎-說明 昇陽公司提出的資料庫中介軟體(Middleware)稱為「JDBC」(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統, 以Java技術來說,就是實作JDBC驅動程式介面(JDBC Driver.
Oracle数据库入门.
JDBC 数据库系统与应用 2014年.
PHP與MySQL 入門學習指南 凱文瑞克 著 第 23 章 資料型別.
第十一章 資料庫設計與權限設定.
JAVA vs. SQL Server 建國科技大學 資管系 饒瑞佶 2013/4 V1.
第4章 SQL语言基础及数据库定义 4.1 基本概念 4.2 SQL Server 提供的主要数据类型 4.3 数据定义.
基于Hadoop的数据仓库Hive.
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
胡鹏 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 胡鹏 王慧锋 TEL:
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
Transact-SQL 語言設計教學.
阿里巴巴分布式数据库 ——原理、实现和应用 集团共享技术平台 分布式数据库 邱硕
第10章 面向对象分析设计与对象模型 面向对象方法中,从分析到设计不像传统方法那样有明显的方法、工具的转换,而是平滑(无缝)过渡。分析设计过程具有良好的可跟踪、可修改和可扩展性。 面向对象设计是面向对象分析到实现的一个桥梁。面向对象分析是将用户需求经过分析后,建立问题域精确模型的过程,而面向对象设计则是根据面向对象分析得到的需求模型,建立求解域模型的过程。
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
MySQL数据库基础与实例教程 之 MySQL表结构的管理 郭水泉.
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
实验4:PL-SQL编程 1.实验目的 2.实验原理 PL/SQL是一种过程化语言,属于第三代语言,本实验在与熟悉使用PL/SQL编程.
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
第一讲 J2EE基础 博和利初级培训 —开发技能.
MySQL开发规范 DB组-张浩.
第 7 章 JDBC数据库访问.
第11章 ListView延迟加载效果 授课老师:高成珍 QQ号: QQ群: 、
领导艺术与方法 适合对象:课长级以上人员 人力资源部 李晓红 2006/6/12
認識資料庫 MySQL 資料庫新增 MySQL 資料表新增 認識欄位資料表 資料新增、刪除、修改、瀏灠 資料表清空與刪除
CS, ZJU 4/18/2019 Chapter 7 数据库.
蘇文峰牧師 第一届“小组长研习会” Session 2
用int类型(4字节)去存具体时间(8字节).
OceanBase 0.4:从API到SQL 日照
VB与Access数据库的连接.
Delphi 7.0开发示例.
28th Weekly Operation Report on DIRAC Distributed Computing
研发技术体系梳理 陈玮
4. 曾文水庫越域引水環評報告彙整 資料來源: 1. 曾文水庫越域引水下游輸水工程環境影響差異分析暨環境現況差異分析及對策檢討報告(定稿本)
学习目标 1、使用Mysql Workbench修改表
96 教育部專案補助計畫案明細 單位 系所 教育部補助款 學校配合款 工作໨目 計畫主 持人 備註 設備費 業務費 579,000
Presentation transcript:

温绍锦(温高铁) http://weibo.com/wengaotie

Druid数据库连接池的特点 稳定 高效率 可扩展 可监控 可动态配置 防SQL注入

稳定 阿里巴巴大规模部署 我们大规模使用中,开源连接池只有两个是稳定的: 应用超过500个 部署实例超过3000 最大集群超过60台 Druid DataSource Jboss DataSource (历史原因还在使用)

稳定的特性-ExceptionSorter 当连接产生不可恢复的异常时,需要及时从连接池中清除,否则会产生大量错误。这个功能也称为ExceptionSorter,只有JBossDataSource和DruidDataSource实现了这个功能。

Oracle Fatal Excetion Error Code 28 Session has been killed 600 Internal oracle error 1012 Not logged on 1014 Oracle shutdown in progress 1033 Oracle initialization or shutdown in progress 1034 Oracle not available 1035 ORACLE only available to users with RESTRICTED SESSION privilege 1089 Immediate shutdown in progres – no operations are permitted 1090 Shutdown in progress – no operations are permitted 1092 ORACLE instance terminated. Disconnection forced 1094 ALTER DATABASE CLOSE in progress. Connections not permitted …

MySql Fatal Exception Error Code 1040 ER_CON_COUNT_EEROR 1042 ER_BAD_HOST_ERRROR 1043 ER_HANDSHAKE_ERROR 1047 ER_UNKOWN_COM_ERROR 1081 ER_IPSOCK_ERROR 1029 ER_HOST_IS_BLOCKED 1030 ER_HOST_NOT_PRIVILEGED 1045 ER_ACCESS_DENIED_ERROR 1004 ER_CANT_CREATE_FILE 1005 ER_CANT_CREAT_TABLE 1015 ER_CANT_LOCK 1021 ER_DISK_FULL …

高性能 Druid是目前性能最好的数据库连接池 1 线程 2 线程 5 线程 10 线程 20线程 50线程 Druid 1,102 1,509 1,889 1,904 2,007 1,977 Tomcat-jdbc 1,399 1,378 2,257 2,289 2,305 2,503 DBCP 3,144 3,834 6,276 6,408 6,563 6,783 BoneCP 4,327 3,598 3,800 5,242 9,402 19,066 Jboss-Datasource 4,912 3,049 6,868 6,512 40,146 43,748 C3P0 18,570 19,467 15,270 19,294 28,195 66,677 Proxool 16,221 14,455 24,688 38,905 48,087 (Error) 58,238 详细测试信息: https://github.com/alibaba/druid/wiki/%E5%90%84%E7%A7%8D%E8%BF%9E%E6%8E%A5%E6%B1%A0%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94%E6%B5%8B%E8%AF%95 Druid是目前性能最好的数据库连接池

SQL Parser Parser基本概念 词法分析 Token 语法分析 抽象语法树 表达式 语句

手写Parser的性能 Cobar的SQL Parser,从Antlr生成的parser修改为Druid Parser之后,大约提升6倍的性能。 Druid Parser最近再次大幅度提升性能(50%) SQL Parser的关键在于词法 词法分析要支持预测

监控

Spring关联监控

Web关联监控

查看SQL执行明细 配置filters=log4j 2013-07-12 16:10:17,966 [DEBUG] Connection:132 - {conn-10001} connected 2013-07-12 16:10:17,970 [DEBUG] Connection:132 - {conn-10001} commited 2013-07-12 16:10:17,970 [DEBUG] Connection:132 - {conn 10001} rollback 2013-07-12 16:10:17,983 [DEBUG] Statement:137 - {conn-10001, stmt-20000} created 2013-07-12 16:10:17,986 [DEBUG] Statement:137 - {conn-10001, stmt-20000} executed. 0.052501 millis. SELECT 1 2013-07-12 16:10:17,986 [DEBUG] Statement:137 - {conn-10001, stmt-20000} batch executed. 0.041842 millis. SELECT 1 2013-07-12 16:10:18,205 [DEBUG] Statement:137 - {conn-10001, stmt-20000, rs-50000} query executed. 219.082247 millis. SELECT 1 2013-07-12 16:10:18,205 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50000} open 2013-07-12 16:10:18,206 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50000} Header: [null] 2013-07-12 16:10:18,206 [DEBUG] Statement:137 - {conn-10001, stmt-20000} update executed. effort 0. 0.019343 millis. SELECT 1 2013-07-12 16:10:18,223 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} created. SELECT 1 2013-07-12 16:10:18,260 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} Parameters : [null, null, null, null, com.alibaba.druid.mock.MockBlob@34aee875, 1, [B@471f7458, null, com.alibaba.druid.mock.MockClob@620f61e2, null, 1.0, 1, 1, null, com.alibaba.druid.mock.MockNClob@5fe36eb9, null, null, null, com.alibaba.druid.mock.MockRef@4c7a64dd, com.alibaba.druid.mock.MockRowId@77741064, 1, com.alibaba.druid.mock.MockSQLXML@64e05280, , null, null, null, null] 2013-07-12 16:10:18,260 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} Types : [ARRAY, OTHER, DECIMAL, OTHER, BLOB, TINYINT, OTHER, OTHER, CLOB, DATE, FLOAT, INTEGER, BIGINT, OTHER, NCLOB, NVARCHAR, VARCHAR, OTHER, REF, ROWID, SMALLINT, SQLXML, VARCHAR, TIME, TIMESTAMP, OTHER, OTHER] 2013-07-12 16:10:18,260 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} executed. 0.564872 millis. SELECT 1 2013-07-12 16:10:18,260 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} batch executed. 0.0075 millis. SELECT 1 2013-07-12 16:10:18,262 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} Types : [ARRAY, OTHER, DECIMAL, OTHER, BLOB, TINYINT, OTHER, OTHER, CLOB, DATE, FLOAT, INTEGER, BIGINT, OTHER, NCLOB, NVARCHAR, VARCHAR, OTHER, REF, ROWID, SMALLINT, SQLXML, VARCHAR, TIME, TIMESTAMP, OTHER, OTHER] 2013-07-12 16:10:18,262 [DEBUG] Statement:137 - {conn-10001, pstmt-20001, rs-50001} query executed. 1.805932 millis. SELECT 1 2013-07-12 16:10:18,262 [DEBUG] ResultSet:142 - {conn-10001, pstmt-20001, rs-50001} open 2013-07-12 16:10:18,263 [DEBUG] ResultSet:142 - {conn-10001, pstmt-20001, rs-50001} Header: [null] 2013-07-12 16:10:18,263 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} Parameters : [null, null, null, null, com.alibaba.druid.mock.MockBlob@34aee875, 1, [B@471f7458, null, com.alibaba.druid.mock.MockClob@620f61e2, null, 1.0, 1, 1, null, com.alibaba.druid.mock.MockNClob@5fe36eb9, null, null, null, com.alibaba.druid.mock.MockRef@4c7a64dd, com.alibaba.druid.mock.MockRowId@77741064, 1, com.alibaba.druid.mock.MockSQLXML@64e05280, , null, null, null, null] 2013-07-12 16:10:18,263 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} Types : [ARRAY, OTHER, DECIMAL, OTHER, BLOB, TINYINT, OTHER, OTHER, CLOB, DATE, FLOAT, INTEGER, BIGINT, OTHER, NCLOB, NVARCHAR, VARCHAR, OTHER, REF, ROWID, SMALLINT, SQLXML, VARCHAR, TIME, TIMESTAMP, OTHER, OTHER] 2013-07-12 16:10:18,263 [DEBUG] Statement:137 - {conn-10001, pstmt-20001} update executed. effort 0. 0.287765 millis. SELECT 1 2013-07-12 16:10:18,274 [DEBUG] Statement:137 - {conn-10001, cstmt-20002} created. SELECT 1 2013-07-12 16:10:18,274 [DEBUG] Statement:137 - {conn-10001, stmt-20000, rs-50002} query executed. 0.081711 millis. SELECT 1 2013-07-12 16:10:18,274 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50002} open 2013-07-12 16:10:18,274 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50002} Header: [null] 2013-07-12 16:10:18,275 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50002} Result: [1]

防御SQL注入 配置filters=“wall” 智能拦截永真条件 智能拦截系统函数调用 智能拦截系统表访问

集中配置、动态配置 filters=“config” 支持数据库密码加密 支持从本地或者http远程读取配置文件