本文目錄一覽:
- 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需要程序員告訴它,到底底層用的是哪種數據庫。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/159778.html