mysql之存储引擎和文件配置
補充:將mysql做成系統服務:mysqld --install
取消:mysqld --romove
在服務中可以直接鼠標操作mysql服務的啟動與停止
在cmd中也可以操作
net start mysql
net stop mysql
一 存儲引擎
? ? 我們用來存儲數據的文件應該有不同的類型:比如存文本用txt類型,存表格用excel,存圖片用png等
? ? 存儲引擎說白了就是如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。因為在關系數據庫中數據的存儲是以表的形式存儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)
? ? 在Oracle 和SQL Server等數據庫中只有一種存儲引擎,所有數據存儲管理機制都是一樣的。而MySql
? ? 數據庫提供了多種存儲引擎。用戶可以根據不同的需求為數據表選擇不同的存儲引擎,用戶也可以根據
什么是存儲引擎:在數據庫中,表的類型是不同的,而存儲引擎就是表的類型。針對不同的存儲引擎,數據庫也有不同的處理方法。
show engines:查看一個存儲引擎。
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec)?連接池:實現并發,連接池允許多個客戶端使用緩存起來的連接對象,這些對象是可以連接數據庫的,他們之間是共享的,可以被重復的使用。
詳情請訪問:http://www.importnew.com/8179.html
常用的存儲引擎:
innodb:支持事物,支持事物安全表,支持行鎖定和外鍵。
? ? ? ? ? ?1 外鍵約束對子表的意義:如果在主表上找不到外鍵的候選鍵時,則不允許在字表上進行insert/update。
2外鍵約束對主表的意義:在父表上進行update/delete以更新或刪除在子表中有一條或多條對應匹配行的候選鍵時,父表的行為取決于:在定義子表的外鍵時指定的?on update/on delete子句
? ? 3 innodb支持的四種方式:
???? 3.1.1 cascade方式,在主表上update/delete記錄時,同步update/delete掉子表的匹配記錄。
? ? ? 3.1.2 外鍵的級聯刪除: 如果主表上的記錄刪除,則子表對應的記錄則會自動刪除。
FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)ON DELETE CASCADE??? 3.2.1 set null方式 , 在主表上update/delete記錄時,將子表上匹配記錄的列設為null
? ? ? ? ? ?3.2.2 要注意子表的外鍵不能為not null
FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)ON DELETE SET NULL? ? ? ? 3.3 restrict方式:拒絕對主表進行刪除或更新的操作
? ? ? ? 3.4 no action方式 , 在MySQL中同restrict,如果子表中沒有匹配的記錄,則不允許對主表對應候選鍵進行update/delete操作
什么是事務:單個邏輯單元的執行的一系列操作,要么都成功,要么都不會成功。詳情訪問:https://zhidao.baidu.com/question/1689625077782008388.html
mysql> create table t1(id int)engine=innodb; Query OK, 0 rows affected (0.69 sec)mysql> show create table t1; +-------+--------------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------------+ | t1 | CREATE TABLE `t1` (`id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+--------------------------------------------------------------------------------------+ 1 row in set (0.05 sec)myisam:啥都不支持,速度非常的快,將表的信息分成了3個文件來存放。
mysql> create table t4(id int)engine=myisam; Query OK, 0 rows affected (0.13 sec)mysql> show create table t4; +-------+--------------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------------+ | t4 | CREATE TABLE `t4` (`id` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | +-------+--------------------------------------------------------------------------------------+ 1 row in set (0.03 sec)blackhole:只有一個表結構文件,沒有數據,是一個黑洞的存儲引擎,存完數據查看也是沒有數據
mysql> create table t3(id int)engine=blackhole; Query OK, 0 rows affected (0.17 sec)mysql> show create table t3; +-------+-----------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-----------------------------------------------------------------------------------------+ | t3 | CREATE TABLE `t3` (`id` int(11) DEFAULT NULL ) ENGINE=BLACKHOLE DEFAULT CHARSET=utf8 | +-------+-----------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)memory:只有一個表結構文件,數據全部都存放在內存中,關機后數據就會丟失。
mysql> create table t2(id int)engine=memory; Query OK, 0 rows affected (0.12 sec)mysql> show create table t2; +-------+--------------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------------+ | t2 | CREATE TABLE `t2` (`id` int(11) DEFAULT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8 | +-------+--------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)詳情請訪問:http://blog.csdn.net/zhangyuan19880606/article/details/51217952
\s:查看當前客戶端和服務端的字符編碼。
foregin keys:建立表于表之間的關系。
二 文件配置
方法如下:
#在mysql的解壓目錄下,新建my.ini,然后配置 #1. 在執行mysqld命令時,下列配置會生效,即mysql服務啟動時生效 [mysqld] ;skip-grant-tables port=3306 character_set_server=utf8 default-storage-engine=innodb innodb_file_per_table=1#解壓的目錄 basedir=E:\mysql-5.7.19-winx64 #data目錄 datadir=E:\my_data #在mysqld --initialize時,就會將初始數據存入此處指定的目錄,在初始化之后,啟動mysql時,就會去這個目錄里找數據#2. 針對客戶端命令的全局配置,當mysql客戶端命令執行時,下列配置生效 [client] port=3306 default-character-set=utf8 user=root password=123#3. 只針對mysql這個客戶端的配置,2中的是全局配置,而此處的則是只針對mysql這個命令的局部配置 [mysql] ;port=3306 ;default-character-set=utf8 user=egon password=4573#!!!如果沒有[mysql],則用戶在執行mysql命令時的配置以[client]為準?
轉載于:https://www.cnblogs.com/fangjie0410/p/7701210.html
總結
以上是生活随笔為你收集整理的mysql之存储引擎和文件配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三次贝塞尔曲线平滑多边形
- 下一篇: 201621123021《JAVA程序设