mysql支持的驱动类型怎么看_Mysql Java 驱动代码阅读笔记及 JDBC 规范笔记

原标题:Mysql Java 驱动代码阅读笔记及 JDBC 规范笔记

来源:hengyunabc,

blog.csdn.net/hengyunabc/article/details/7722147

一、前言:

以前刚开始用Java连接MySQL时,都是连猜带蒙的。比如:

一个Statement,Connection何时关闭?

Connection能不能先于Statement关闭?

ResultSet是怎样存放数据的?怎样才能高效操纵ResultSet?

PrepareStatement到底是怎样回事?

连接池是怎样工作的?

二、从JDBC driver代码分析:

在性能要求高的地方,应当使用ResultSet.get**(int)系列函数

如ResultSet.getBytes(String columnName),

则会先会调用findColumn(columnName)去查找到columnName对应的index是什么,而在findColumn(columnName)函数中,

会检查索引有没有构建好了,如果还没有则要构建columnName对应的索引。

所以,如果对性能要求,则应该使用ResultSet.getBytes(int column)函数。

PreparedStatement的缓存及重用

对于PreparedStatement,会有一个LRUCache来存放,会先到里面去取,拿不到再创建一个新的。

这个LRUCache的默认大小是25(太小了吧。。)。对于sql长度,如果大于256的,貌似则不缓存这个PreparedStatement。

LRUCache很简单,代码:

public class LRUCache extends LinkedHashMap {

protected int maxElements;

public LRUCache(int maxSize) {

super(maxSize);

this.maxElements = maxSize;

}

protected boolean removeEldestEntry(Entry eldest) {

return (size() > this.maxElements);

}

LinkedHashMap在每次put和putAll后,会调用removeEldestEntry来判断是否要移除最老的Entry。

LinkedHashMap的实现也比较简单,里面用双向链表把所有的Entry串在一起,当调用get时,把get所在的key移到链表的最前面。

PreparedStatement是如何实现重用的ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中文参考手册 译者:晏子 (clyan@sohu.com) 主页:http://linuxdb.yeah.net -------------------------------------------------------------------------------- 第一章,前一章,下一章, 最后一章, 目录. -------------------------------------------------------------------------------- 1 MySQL 的一般信息 这是MySQL参考手册;它记载了MySQL版本3.23.7-alpha。 MySQL 是一个快速、多线程、多用户和强壮的SQL数据库服务器。 对Unix和 OS/2 平台,MySQL基本上是免费的;但对微软平台,你在30 天的试用期后必须获得一个MySQL 许可证。详见第三节 MySQL许可证和技术支持MySQL 主页提供有关MySQL的最新信息。 对于MySQL能力的讨论,详见1.4 MySQL 的主要特征。 对于安装指南,见4 安装 MySQL。对于有关移植MySQL到新机器或操作系统的技巧,参见G 对移植到其他系统的说明。 有关从 3.21 版升级的信息,详见4.16.2 从一个 3.21 版本升级到 3.22 。 MySQL的入门教程,见8 MySQL 教程。 SQL和基准信息的例子,见基准目录(在分发中的'sql-bench'目录)。 对于新特征和错误修复一个历史记录,见D MySQL的变迁。 对于当前已知错误和功能缺陷的一张列表,见E MySQL已知错误和设计缺陷。 未来计划,见F 我们想要在未来加入到MySQL 的计划表( TODO )。 这个计划的所有贡献者的名单,见C MySQL 的贡献者。 重要: 将臭虫(错误)报告、问提和建议发到邮件列表(原文未提供)。 对源代码分发,mysqlbug 脚本可在‘scripts’目录下找到。 对二进制的分发,mysqlbug可在‘bin’目录下找到。 如果你有任何关于这本手册的增补或修正的任何建议,请将它们发给手册小组(docs@mysql.com )。 1.1 什么是 MySQLMySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。 SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。 MySQL 主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。自1996年以来,我们一直都在使用MySQL,其环境有超过 40 个数据库,包含 10,000个表,其中500多个表超过7百万行,这大约有100 个吉字节(GB)的关键应用数据。 MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值