mysqljava緩存
設置java虛擬機運行參數:
如:
-Xms64m
-Xmx256m
如果你用的是Eclipse的話,
可以在菜單中選
run -> run configurations
打開Run configurations的對話框,
在(x)Arguments選項卡中,VMarguments的那個textbox中,
寫上
-Xms64m
-Xmx256m
就可以了,
-Xms是java虛擬機初始化時分配的內存,
-Xmx是java虛擬機運行是可以使用的最大內存。
你可以測試一下執行的時間。
看看瓶頸在哪裡,可能是資料庫的操作sql語句的問題。
這個和多線程應該沒有太大的關系。
③ 我的JAVAWEB工程SQL語句在MYSQL中可以正確執行,但是在TOMCAT里卻報錯,求助解答~~~
maven項目就clean、install,然後重啟項目
重啟項目
如果還不行就清除網頁緩存
以上是你曾經在idea中輸入過錯誤SQL語句(後來在MYSQL中調試成功了)時首先可以選擇的做法
下面是沒有修改過的可選做法
查看配置文件,資料庫是否連通
查看資料庫版本
仔細檢查語法,尤其是逗號。
④ 在MySQL中使用java存儲圖像問題,怎麼解決
檢查sql語句的語法 ,
運行環境:
mysql-connector-java-3.1.12-bin.jar
sqljdbc4.jar(與此jar無關)
運行結果:
java.sql.SQLException: Incorrect arguments to mysql_stmt_execute
如果使用高版本的mysql jar包,則沒有問題,比如
mysql-connector-java-5.1.39-bin.jar
⑤ java的enum類型直接插入mysql的enum欄位不行嗎
根據用戶定義的枚舉值與分片節點映射文件,直接定位目標分片。
用戶在rule.xml中配置枚舉值文件路徑和分片索引是字元串還是數字,DBLE在啟動時會將枚舉值文件載入到內存中,形成一個映射表
在DBLE的運行過程中,用戶訪問使用這個演算法的表時,WHERE子句中的分片索引值會被提取出來,直接查映射表得到分片編號
- Male=0Male=1
- 123=1123=2
- Mr=0Mrs=1Miss=1Ms=1123=0
與MyCat的類似分片演算法對比
中間件
DBLE
MyCat
分片演算法種類 enum 分區演算法 分片枚舉
兩種中間件的枚舉分片演算法使用上無差別。
開發注意點
【分片索引】1. 整型數字(可以為負數)或字元串((不含=和換行符)
【分片索引】2. 枚舉值之間不能重復
或者
會導致分片策略載入出錯
【分片索引】3. 不同枚舉值可以映射到同一個分片上
運維注意點
【擴容】1. 增加枚舉值無需數據再平衡
【擴容】2. 增加一個枚舉值的分片數量數時,需要對局部數據進行遷移
【縮容】1. 減少枚舉值需要數據再平衡
【縮容】2. 減少一個枚舉值的分片數量數時,需要對局部數據進行遷移
配置注意點
【配置項】1. 在 rule.xml 中,可配置項為<property name="defaultNode"> 、<property name="mapFile"> 和 <property name="type">
【配置項】2. 在 rule.xml 中配置<property name="defaultNode">標簽,非必須配置項,不配置該項的話,用戶的分片索引值沒落在 mapFile 定義的范圍時,DBLE 會報錯;若需要配置,必須為非負整數,用戶的分片索引值沒落在 mapFile 定義的范圍時,DBLE 會路由至這個值的 MySQL 分片
【配置項】3. 在 rule.xml 中配置 <property name="mapFile">標簽,范圍映射文件的路徑:若在映射文件在 DBLE_HOME/conf 或其中,則可以使用相對路徑的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 時,配置值就可以簡寫為 map/table_map.txt;映射文件在 DBLE_HOME/conf 目錄以外時,需要使用絕對路徑,但這種做法需要考慮用戶許可權等問題,因此不建議把映射文件放在 DBLE_HOME/conf 外。
【配置項】4. 編輯 mapFile 所配置的文件
記錄格式為:<枚舉值>=<分片編號>
枚舉值可以是整型數字,或任意字元(除了=和換行符),分片編號必須是非負整型數字,記錄之間以換行分隔,一行僅能有一條記錄,枚舉值不能夠是「DEFAULT_NODE」這個字元串,允許以「//」和「#」在行首來注釋該行
【配置項】5. 在 rule.xml 中配置 <property name="type">標簽;type 必須為整型;取值為 0 時,mapFile 的<枚舉值>必須為整型;取值為非 0 時,mapFile 的<枚舉值>可以是任意字元(除了=和換行符)
⑥ java ssh mysql資料庫連接失效,重啟java工程。如何解決
1、一般的解決方法大多是在資料庫連接字元串中增加「autoReconnect=true 」選項。但是這只對mysql4以前的版本有效。在最新的mysql中是無效的。其實要解決這個問題也有一個簡單的方法,就是修改mysql的啟動參數。預設情況下mysql的timeout時間是28800秒,正好是8小時,增加一個0就可以了。
同理也可以在" my.ini"文件中增加此參數。
mysqld-nt --default-table-type=innodb --interactive_timeout=288000
2、從根源入手,設置mysql的wait_timeout為31536000(一年)。
mysql> show variables;
| wait_timeout | 28800
| interactive_timeout | 28800
" my.ini"文件中修改此參數
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
重啟服務,OK!
⑦ java伺服器的mysql資料庫刪除記錄後如何釋放資源
這個應該會被垃圾回收掉的。
⑧ redis怎麼與mysql同步java代碼
redis應該算是本地緩存,而mysql的話是資料庫,你的意思應該是:怎麼用java代碼同步資料庫中的數據到redis。如果是這種情況的話:目前項目中會用一個定時任務定時去讀取資料庫中的數據,然後放到redis,或者在項目初始化讀取資料庫然後再放到redis
⑨ java連接mysql資料庫
步驟如下,
1. 在開發環境中載入指定資料庫的驅動程序。
接下來的實驗中,使用資料庫MySQL,所以需要下載MySQL支持JDBC的驅動程序(mysql-connector-java-5.1.18-bin.jar)。
2. 開發環境是MyEclipse,將下載得到的驅動程序載入進開發環境中。
3. 在Java程序中載入驅動程序。
在Java程序中,通過 「Class.forName(「指定資料庫的驅動程序」)」
方式來載入添加到開發環境中的驅動程序,例如Class.forName(「com.mysql.jdbc.Driver」)。
4. 創建數據連接對象:通過DriverManager類創建資料庫連接對象Connection。
DriverManager類作用於Java程序和JDBC驅動程序之間,用於檢查所載入的驅動程序是否可以建立連接,然後通過它的getConnection方法,根據資料庫的URL、用戶名和密碼,創建一個JDBC
Connection 對象。代碼如:Connection connection = DriverManager.getConnection(「連接資料庫的URL", "用戶名",
"密碼」)。
其中,URL=協議名+IP地址(域名)+埠+資料庫名稱;用戶名和密碼是指登錄資料庫時所使用的用戶名和密碼。具體示例創建MySQL的資料庫連接代碼如下:
Connection connectMySQL =
DriverManager.geiConnection(「jdbc:mysql://localhost:3306/myuser","root"
,"root" );
5. 創建Statement對象:Statement 類的主要是用於執行靜態 SQL
語句並返回它所生成結果的對象。
通過Connection 對象的 createStatement()方法可以創建一個Statement對象。例如:Statement statament =
connection.createStatement(); 具體示例創建Statement對象代碼如下:Statement statamentMySQL =connectMySQL.createStatement();
6. 調用Statement對象的相關方法執行相對應的 SQL
語句:通過execuUpdate()方法用來數據的更新,包括插入和刪除等操作,例如向staff表中插入一條數據的代碼:
statement.excuteUpdate( "INSERT INTO
staff(name, age, sex,address, depart, worklen,wage)" + " VALUES ('Tom1', 321,
'M', 'china','Personnel','3','3000' ) ") ;
7. 通過調用Statement對象的executeQuery()方法進行數據的查詢,而查詢結果會得到
ResulSet對象,ResulSet表示執行查詢資料庫後返回的數據的集合,ResulSet對象具有可以指向當前數據行的指針。通過該對象的next()方法,使得指針指向下一行,然後將數據以列號或者欄位名取出。如果當next()方法返回null,則表示下一行中沒有數據存在。使用示例代碼如下:
ResultSet resultSel =
statement.executeQuery( "select * from staff" );
8. 關閉資料庫連接:使用完資料庫或者不需要訪問資料庫時,通過Connection的close() 方法及時關閉數據連接。