本文目录一览:
- 1、什么是Mysql数据库,与其它数据库的区别和特点是什么?
- 2、Oracle、DB2、MySQL每种数据库都有几个不同的方言,在什么情况下使用哪种方言呢? 十万火急+++++++
- 3、MySQL各版本的区别
- 4、数据库的方言是什么意思啊
- 5、一个hibernate中对于mysql的数据库方言问题
什么是Mysql数据库,与其它数据库的区别和特点是什么?
MySQL(发音为“mynbsp;essnbsp;cuenbsp;el“,不是“mynbsp;sequel“)是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。nbsp;nbsp;由于MySQL是开放源代码的,因此任何人都可以在Generalnbsp;Publicnbsp;License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。nbsp;nbsp;nbsp;nbsp;MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、nbsp;Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。nbsp;nbsp;nbsp;nbsp;MySQL开发组计划于2001年中期公布MySQL4.0版本。在这个版本中将有以下新的特性被提供:新的表定义文件格式、高性能的数据复制功能、更加强大的全文搜索功能。在此之后,MySQL开发着希望提供安全的数据复制机制、在BeOS操作系统上的MySQL实现以及对延时关键字的定期刷新选项。随着时间的推进,MySQL将对ANSInbsp;92/ANSInbsp;99标准完全兼容。MsSql----amp;gt;MicroSoftnbsp;nbsp;nbsp;Sqlnbsp;nbsp;nbsp;Server,需要money,而且很多呢。(大型项目用,大型网站用)nbsp;nbsp;nbsp;nbsp;MySql----amp;gt;免费的。速度快。可以用于小型项目。nbsp;mysql数据库和oracle的区别和选择:LAMP大会的时候我跟Yahoo的一个技术高管聊的时候,我问他Yahoo在选择MySQL还是nbsp;Oracle的时候是怎么考虑,他的答案令我非常惊讶。他说大部分的时候我们是会用MySQL的,因为它的性能已经达到我们的要求。但是什么时候我们会选用Oracle呢,就是当我们需要存储收费用户的数据的时候。我就问为什么,难道Oracle比MySQL稳定吗?他说,这个倒没有特别考虑。关键是如果使用Oracle的话,当出现问题的时候我们可以找到负责人,Oracle会负责事故的处理,但是如果用MySQL的话,我们找谁去?
Oracle、DB2、MySQL每种数据库都有几个不同的方言,在什么情况下使用哪种方言呢? 十万火急+++++++
1) 先能知道是不是mysql
select row_number() over() from tab--- oracle/db2都可以返回结果的,mysql不可以
2) oracle/db2
run sql: select * from sysibm/sysdummy1---〉结果返回,必定为db2,否则为oracle
数据库方言自动选择这个很难确定,只有碰到特定的方法的时候才能知道用那个方言下的方法,必须具体问题才能具体分析。
MySQL各版本的区别
一、费用上的区别
MySQL Community Server是开源社区版,不需要收费,MySQL Enterprise是企业版是要收费的。MySQL Cluster则是一种架构方案,由一组计算机组成,开源免费,MySQL Workbench则是一个图形化界面用来管理Mysql,分为商业和社区。
二、性能上的区别
MySQL Community Server的性能要低于MySQL Enterprise,MySQL Cluster的性能要远远高于单独一个MySQL Community Server和MySQL Enterprise。
三、功能上的区别
MySQL Community Server功能比较单一,而MySQL Enterprise要比社区版多出来许多功能。
数据库的方言是什么意思啊
C3P0:com.mchange.v2.c3p0.ComboPooledDataSource
c3p0-config
default-config
!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --
property name="acquireIncrement"3/property
!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --
property name="acquireRetryAttempts"30/property
!--两次连接中间隔时间,单位毫秒。Default: 1000 --
property name="acquireRetryDelay"1000/property
!--连接关闭时默认将所有未提交的操作回滚。Default: false --
property name="autoCommitOnClose"false/property
!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么
属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试
使用。Default: null--
property name="automaticTestTable"Test/property
!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false--
property name="breakAfterAcquireFailure"false/property
!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 --
property name="checkoutTimeout"100/property
!--通过实现ConnectionTester或QueryConnectionTester的类来测试连接。类名需制定全路径。
Default: com.mchange.v2.c3p0.impl.DefaultConnectionTester--
property name="connectionTesterClassName"/property
!--指定c3p0 libraries的路径,如果(通常都是这样)在本地即可获得那么无需设置,默认null即可
Default: null--
property name="factoryClassLocation"null/property
!--Strongly disrecommended. Setting this to true may lead to subtle and bizarre bugs.
(文档原文)作者强烈建议不使用的一个属性--
property name="forceIgnoreUnresolvedTransactions"false/property
!--每60秒检查所有连接池中的空闲连接。Default: 0 --
property name="idleConnectionTestPeriod"60/property
!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 --
property name="initialPoolSize"3/property
!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --
property name="maxIdleTime"60/property
!--连接池中保留的最大连接数。Default: 15 --
property name="maxPoolSize"15/property
!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0--
property name="maxStatements"100/property
!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 --
property name="maxStatementsPerConnection"/property
!--c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能
通过多线程实现多个操作同时被执行。Default: 3--
property name="numHelperThreads"3/property
!--当用户调用getConnection()时使root用户成为去获取连接的用户。主要用于连接池连接非c3p0
的数据源时。Default: null--
property name="overrideDefaultUser"root/property
!--与overrideDefaultUser参数对应使用的一个参数。Default: null--
property name="overrideDefaultPassword"password/property
!--密码。Default: null--
property name="password"/property
!--定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意:
测试的表必须在初始数据源的时候就存在。Default: null--
property name="preferredTestQuery"select id from test where id=1/property
!--用户修改系统配置参数执行前最多等待300秒。Default: 300 --
property name="propertyCycle"300/property
!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。Default: false --
property name="testConnectionOnCheckout"false/property
!--如果设为true那么在取得连接的同时将校验连接的有效性。Default: false --
property name="testConnectionOnCheckin"true/property
!--用户名。Default: null--
property name="user"root/property
!--早期的c3p0版本对JDBC接口采用动态反射代理。在早期版本用途广泛的情况下这个参数允许用户恢复到动态反射代理以解决不稳定的故障。最新的非反射代理更快并且已经开始广泛的被使用,所以这个参数未必有用。现在原先的动态反射与新的非反射代理同时受到支持,但今后可能的版本可能不支持动态反射代理。Default: false。
jdbc:mysql://ip地址:3306/数据库名字?useUnicode=truecharacterEncoding=utf-8
2.C3P0连接配置
?xml version='1.0' encoding='UTF-8'?
!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
""
hibernate-configuration
session-factory
!?JDBC驱动程序--
property name="connection.driver_class"com.mysql.jdbc.Driver/property
!-- 连接数据库的URL--
property name="connection.url"
jdbc:mysql://localhost:3306/schoolproject
/property
property name="connection.useUnicode"true/property
property name="connection.characterEncoding"UTF-8/property
!--连接的登录名--
property name="connection.username"root/property
!--登录密码--
property name="connection.password"/property
!-- C3P0连接池设定--
property name="hibernate.connection.provider_class"org.hibernate.connection.C3P0ConnectionProvider
/property
property name="hibernate.c3p0.max_size"20/property
property name="hibernate.c3p0.min_size"5/property
property name="hibernate.c3p0.timeout"120/property
property name="hibernate.c3p0.max_statements"100/property
property name="hibernate.c3p0.idle_test_period"120/property
property name="hibernate.c3p0.acquire_increment"2/property
!--是否将运行期生成的SQL输出到日志以供调试--
property name="show_sql"true/property
!--指定连接的语言--
property name="dialect"org.hibernate.dialect.MySQLDialect/property
!--映射Student这个资源--
mapping resource="com/wqbi/model/pojo/student.hbm.xml" /
/session-factory
/hibernate-configuration
proxool连接池
(1) 先写proxool的配置文件,文件名:proxool.xml(一般放在与hibernate.cfg.xml文件在同一个目录中)本例配置的是MYSQL数据库,数据库的名字为schoolproject
?xml version="1.0" encoding="UTF-8"?
!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. --
something-else-entirely
proxool
!--连接池的别名--
aliasDBPool/alias
!--proxool只能管理由自己产生的连接--
driver-url
jdbc:mysql://localhost:3306/schoolproject?useUnicode=truecharacterEncoding=UTF8
/driver-url
!?JDBC驱动程序--
driver-classcom.mysql.jdbc.Driver/driver-class
driver-properties
property name="user" value="root"/
property name="password" value=""/
/driver-properties
!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回
收,超时的销毁--
house-keeping-sleep-time90000/house-keeping-sleep-time
!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的
用户连接就不会被接受--
maximum-new-connections20/maximum-new-connections
!-- 最少保持的空闲连接数--
prototype-count5/prototype-count
!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的
等待请求数由maximum-new-connections决定--
maximum-connection-count100/maximum-connection-count
!-- 最小连接数--
minimum-connection-count10/minimum-connection-count
/proxool
/something-else-entirely
(2)配置hibernate.cfg.xml文件
?xml version='1.0' encoding='UTF-8'?
!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
""
hibernate-configuration
session-factory
property name="hibernate.connection.provider_class"
org.hibernate.connection.ProxoolConnectionProvider
/property
property name="hibernate.proxool.pool_alias"DBPool/property
property name="hibernate.proxool.xml"proxoolconf.xml/property
!--是否将运行期生成的SQL输出到日志以供调试--
property name="show_sql"true/property
!--指定连接的语言--
property name="dialect"org.hibernate.dialect.MySQLDialect/property
!--映射Student这个资源--
mapping resource="com/wqbi/model/pojo/student.hbm.xml" /
/session-factory
/hibernate-configuration
(1) hibernate.connection.provider_class定义Hibernate的连接加载类,这里Proxool连接池是用这个,不同的连接池有不同的加载类,可以查阅Hibernate文档获取相关信息
(2) hibernate.proxool.pool_alias这里就是用我们上面提到的连接池的别名
(3) hibernate.proxool.xml是向Hibernate声明连接池的配置文件位置,可以用相对或绝对路径,用相对路径时要注意一定在要Path范围内!不然会抛出异常。
(4) dialect是声明SQL语句的方言
(5) show_sql定义是否显示Hibernate生成的SQL语言,一般在调试阶段设为true,完成后再改成false,这样有利于调试。
(6) mapping 资源文件映射
一个hibernate中对于mysql的数据库方言问题
数据库方言就是你用的那个版本的数据库就用设定为哪种方言即可。
有些数据库有varchar2类型,有些数据库有varchar,有些数据有number类型。
而Hibernate可以支持几乎所有数据库,这就要求Hibernate针对这些差别生成不同的SQL语句。
所以Hibernate需要程序员告诉它,到底底层用的是哪种数据库。