日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 表 类型_mysql表类型

發布時間:2025/3/12 数据库 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 表 类型_mysql表类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL支持6種不同的表類型:BDB、InnoDB、HEAP、ISAM、MERGE以及MyISAM。其中 BDB,InnoDB單獨屬于一類,稱為“事務安全型”(transaction-safe),其余的表類型屬于第二類,稱為“非事務安全型”(non- transaction-safe)。

事務安全型

BDB

BDB全稱是“Berkeley DB”,它是MySQL具有事務能力的表類型,由Sleepycat Software (http://www.sleepycat.com)開發。BDB表類型提供了MySQL用戶長久期盼的功能,即事務控制能力。在任何RDBMS中,事 務控制能力都是一種極其重要和寶貴的功能。事務控制能力使得我們能夠確保一組命令確實已經全部執行成功,或者確保當任何一個命令出現錯誤時所有命令的執行 結果均被回退。可以想象,在電子銀行這類應用中事務控制能力是極其重要的。

InnoDB

InnoDB:這種類型是事務安全的.它與BDB類型具有相同的特 性,它們還支持外鍵.InnoDB表格速度很快.具有比BDB還豐富的特性,因此如果需要一個事務安全的存儲引擎,建議使用它.如果你的數據執行大量的 INSERT或UPDATE,出于性能方面的考慮,應該使用InnoDB表。對于支持事物的InnoDB類 型的表,影響速度的主要原因是AUTOCOMMIT默認設置是打開的,而且程序沒有顯式調用BEGIN 開始事務,導致每插入一條都自動Commit,嚴重影響了速度。可以在執行sql前調用begin,多條sql形成一個事務(即使autocommit打 開也可以),將大大提高性能。

非事務安全型

HEAP

HEAP表是訪問數據速度最快的MySQL表,這是因為這類表使用保存在內存中的散列索引。但有極其重要的一點必須注意,如果MySQL或者服務器崩潰,HEAP表中的數據將會丟失!

ISAM

ISAM表類型是MyISAM出現之前MySQL的默認表類型,所以現在這種表類型是不推薦使用的,建議改用MyISAM表。

MERGE

MERGE是一種值得關注的新式表類型,在3.23.25版中提供。MERGE表實際上由一組同樣的MyISAM表合并而成。之所以要把多個同樣的表合并成一個,主要是出于性能上的考慮,因為它能夠提高搜索速度、提高修復效率、節省磁盤空間。

MyISAM

MyISAM表類型是MySQL默認的表類型。MyISAM表類型以ISAM為基礎,MyISAM表比ISAM表要小,因而占用資源更少。但增加了許多有用的擴展。 它是存儲記錄和文件的標準方法.與其他存儲引擎比較, MyISAM具有檢查和修復表格的大多數工具. MyISAM表格可以被壓縮,而且它們支持全文搜索.它們不是事務安全的,而且也不支持外鍵。如果事物回滾將造成不完全回滾,不具有原子性。如果執行大量 的SELECT,MyISAM是更好的選擇。另外,MyISAM類型的二進制數據文件可以在不同操作系統中遷移。也就是可以直接從Windows系統拷貝 到linux系統中使用。

注意點:

* 4.0以上mysqld都支持事務,包括非max版本。3.23的需要max版本mysqld才能支持事務。

* 創建表時如果不指定type則默認為myisam,不支持事務。可以用 show create table tablename 命令看表的類型。

* 對不支持事務的表做start/commit操作沒有任何效果,在執行commit前已經提交

可以執行以下命令來切換非事務表到事務(數據不會丟失),innodb表比myisam表更安全: alter table tablename type=innodb;

* innodb表不能用repair table命令和myisamchk -r table_name但可以用check table,以及mysqlcheck [OPTIONS] database [tables]

* 啟動mysql數據庫的命令行中添加了以下參數可以使新發布的mysql數據表都默認為使用事務(只影響到create語句)--default-table-type=InnoDB

* 臨時改變默認表類型可以用:

set table_type=InnoDB;

show variables like 'table_type';

或:

c:/mysql/bin/mysqld-max-nt --standalone --default-table-type=InnoDB

* 設置mysql用戶密碼應該采用如下方式(注意密碼的輸入方式):

update user set password=password(‘password’) where user=’root’

* 解決Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server異常

解決方法:

1、 改表法。可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql后,更改 "mysql" 數據庫里的 "user" 表里的 "host" 項,從"localhost"改稱"%"

mysql -u root –p vmware mysql>use mysql; mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;

2. 授權法。例如,你想myuser使用mypassword從任何主機連接到mysql服務器的話。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允許用戶myuser從ip為192.168.1.3的主機連接到mysql服務器,并使用mypassword作為密碼

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.40.54' IDENTIFIED BY '123456' WITH GRANT OPTION;

* 解決JPA自動建表沒有生成外鍵的問題

解決辦法:

1、可能是數據庫表的默認類型不是InnoDB,所以修改數據庫表的默認類型為InnoDB。

2、數據連接的dialect如下設置

總結

以上是生活随笔為你收集整理的mysql 表 类型_mysql表类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。