mysql數據庫+java實現事務控制工作筆記

一、mysql數據庫+java實現事務控制,防止程序異常時數據庫產生錯誤數據支持事務回滾

1、創建數據庫數據表時添加引擎代碼如下:

CREATE TABLE `uchome_happyfarm_config` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `uid` int(11) NOT NULL DEFAULT '0',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


2mysql數據庫配置文件

windows下是my.ini

linux下是my.cnf

         mysql 的配置文件在/etc/my.cnf

    PS

         1linux下查找文件位置

         locate my.cnf就出來了(沒有的話先updatedb

         find / -name 你要找的文件(my.cnf)


3、更改數據表引擎類型 ALTER TABLE `table` ENGINE = MYISAM

缺少InnoDb數據庫引擎。有三種解決方法,總結如下:

1、修改SQL語句中的引擎InnoDBMyISAM,一般MyISAM都是啓用的。

2、修改MySQL安裝目錄下的my.ini,在skip-innodb前增加#,重啓MySQL,然後用show engines命令查看InnoDB的值是不是yes

3、停掉mysql服務,然後刪除ib_logfile0ib_logfile1文件,重啓。記住刪除前備份一下,免得出現不可預料的錯誤

 

連接MYSQL方法:

   格式: mysql -h主機地址 -u用戶名-p用戶密碼

1、例1:連接到本機上的MYSQL

   找到mysql的安裝目錄,一般可以直接鍵入命令mysql -uroot -p,回車後提示你輸密碼,如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進入到MYSQL中了,MYSQL的提示符是:mysql>

2、連接到遠程主機上的MYSQL

   假設遠程主機的IP爲:10.0.0.1,用戶名爲root,密碼爲123。則鍵入以下命令:

   mysql -h10.0.0.1 -uroot -p123

  (注:uroot可以不用加空格,其它也一樣)

3、退出MYSQL命令

   exit (回車)

java代碼:        

conn.setAutoCommit(false);//

Savepoint savept = conn.setSavepoint();//設置事務保存點用於數據庫回滾

try {

         conn.commit();

         conn.setAutoCommit(true);// 恢復JDBC事務的默認提交方式                                        

} catch (Exception e) {

         try {

               conn.rollback(savept);

         } catch (SQLException e1) {

               e1.printStackTrace();

         }

         logger.info(e);//log記錄日誌

         e.printStackTrace();

         StringWriter out = new StringWriter();

         e.printStackTrace(new PrintWriter(out));

         request.setAttribute("err_msg", out.toString());

         String dist = "/application/message/error.jsp";

         forward(request, response, dist);                      

 }


 mysql 表類型說明


數據庫鎖

頁級:引擎 BDB。
表級:引擎 MyISAM , 理解爲鎖住整個表,可以同時讀,寫不行
行級:引擎 INNODB , 單獨的一行記錄加鎖

MyISAM:這個是默認類型,它是基於傳統的ISAM類型,ISAMIndexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是存儲記錄和文件的標準方法。與其他存儲引擎比較,MyISAM具有檢查和修復表格的大多數工具。 MyISAM表格可以被壓縮,而且它們支持全文搜索。它們不是事務安全的,而且也不支持外鍵。如果事物回滾將造成不完全回滾,不具有原子性。如果執行大量的SELECTMyISAM是更好的選擇。

 

InnoDB:這種類型是事務安全的。它與BDB類型具有相同的特性,它們還支持外鍵。InnoDB表格速度很快,具有比BDB還豐富的特性,因此如果需要一個事務安全的存儲引擎,建議使用它。如果你的數據執行大量的INSERTUPDATE,出於性能方面的考慮,應該使用InnoDB表。

 

對於支持事物的InnoDB類型的標,影響速度的主要原因是autocommit,默認設置是打開的,而且程序沒有顯式調用BEGIN 開始事務,導致每插入一條都自動Commit,嚴重影響了速度。可以在執行sql前調用begin,多條sql形成一個事物(即使autocommit打開也可以),將大大提高性能。


Mysql 命令

show engines;-- 查看數據庫引擎使用情況

show create table `app`.`hr_dimission_check_list` ;       -- 查看錶的編碼類型

show table status like tablename\G -- 顯示錶的當前狀態值

 

 

 


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章