mysql之存储引擎和文件配置
補(bǔ)充:將mysql做成系統(tǒng)服務(wù):mysqld --install
取消:mysqld --romove
在服務(wù)中可以直接鼠標(biāo)操作mysql服務(wù)的啟動(dòng)與停止
在cmd中也可以操作
net start mysql
net stop mysql
一 存儲(chǔ)引擎
? ? 我們用來存儲(chǔ)數(shù)據(jù)的文件應(yīng)該有不同的類型:比如存文本用txt類型,存表格用excel,存圖片用png等
? ? 存儲(chǔ)引擎說白了就是如何存儲(chǔ)數(shù)據(jù)、如何為存儲(chǔ)的數(shù)據(jù)建立索引和如何更新、查詢數(shù)據(jù)等技術(shù)的實(shí)現(xiàn)方法。因?yàn)樵陉P(guān)系數(shù)據(jù)庫中數(shù)據(jù)的存儲(chǔ)是以表的形式存儲(chǔ)的,所以存儲(chǔ)引擎也可以稱為表類型(即存儲(chǔ)和操作此表的類型)
? ? 在Oracle 和SQL Server等數(shù)據(jù)庫中只有一種存儲(chǔ)引擎,所有數(shù)據(jù)存儲(chǔ)管理機(jī)制都是一樣的。而MySql
? ? 數(shù)據(jù)庫提供了多種存儲(chǔ)引擎。用戶可以根據(jù)不同的需求為數(shù)據(jù)表選擇不同的存儲(chǔ)引擎,用戶也可以根據(jù)
什么是存儲(chǔ)引擎:在數(shù)據(jù)庫中,表的類型是不同的,而存儲(chǔ)引擎就是表的類型。針對(duì)不同的存儲(chǔ)引擎,數(shù)據(jù)庫也有不同的處理方法。
show engines:查看一個(gè)存儲(chǔ)引擎。
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)?連接池:實(shí)現(xiàn)并發(fā),連接池允許多個(gè)客戶端使用緩存起來的連接對(duì)象,這些對(duì)象是可以連接數(shù)據(jù)庫的,他們之間是共享的,可以被重復(fù)的使用。
詳情請(qǐng)?jiān)L問:http://www.importnew.com/8179.html
常用的存儲(chǔ)引擎:
innodb:支持事物,支持事物安全表,支持行鎖定和外鍵。
? ? ? ? ? ?1 外鍵約束對(duì)子表的意義:如果在主表上找不到外鍵的候選鍵時(shí),則不允許在字表上進(jìn)行insert/update。
2外鍵約束對(duì)主表的意義:在父表上進(jìn)行update/delete以更新或刪除在子表中有一條或多條對(duì)應(yīng)匹配行的候選鍵時(shí),父表的行為取決于:在定義子表的外鍵時(shí)指定的?on update/on delete子句
? ? 3 innodb支持的四種方式:
???? 3.1.1 cascade方式,在主表上update/delete記錄時(shí),同步update/delete掉子表的匹配記錄。
? ? ? 3.1.2 外鍵的級(jí)聯(lián)刪除: 如果主表上的記錄刪除,則子表對(duì)應(yīng)的記錄則會(huì)自動(dòng)刪除。
FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)ON DELETE CASCADE??? 3.2.1 set null方式 , 在主表上update/delete記錄時(shí),將子表上匹配記錄的列設(shè)為null
? ? ? ? ? ?3.2.2 要注意子表的外鍵不能為not null
FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)ON DELETE SET NULL? ? ? ? 3.3 restrict方式:拒絕對(duì)主表進(jìn)行刪除或更新的操作
? ? ? ? 3.4 no action方式 , 在MySQL中同restrict,如果子表中沒有匹配的記錄,則不允許對(duì)主表對(duì)應(yīng)候選鍵進(jìn)行update/delete操作
什么是事務(wù):單個(gè)邏輯單元的執(zhí)行的一系列操作,要么都成功,要么都不會(huì)成功。詳情訪問: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個(gè)文件來存放。
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:只有一個(gè)表結(jié)構(gòu)文件,沒有數(shù)據(jù),是一個(gè)黑洞的存儲(chǔ)引擎,存完數(shù)據(jù)查看也是沒有數(shù)據(jù)
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:只有一個(gè)表結(jié)構(gòu)文件,數(shù)據(jù)全部都存放在內(nèi)存中,關(guān)機(jī)后數(shù)據(jù)就會(huì)丟失。
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)詳情請(qǐng)?jiān)L問:http://blog.csdn.net/zhangyuan19880606/article/details/51217952
\s:查看當(dāng)前客戶端和服務(wù)端的字符編碼。
foregin keys:建立表于表之間的關(guān)系。
二 文件配置
方法如下:
#在mysql的解壓目錄下,新建my.ini,然后配置 #1. 在執(zhí)行mysqld命令時(shí),下列配置會(huì)生效,即mysql服務(wù)啟動(dòng)時(shí)生效 [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時(shí),就會(huì)將初始數(shù)據(jù)存入此處指定的目錄,在初始化之后,啟動(dòng)mysql時(shí),就會(huì)去這個(gè)目錄里找數(shù)據(jù)#2. 針對(duì)客戶端命令的全局配置,當(dāng)mysql客戶端命令執(zhí)行時(shí),下列配置生效 [client] port=3306 default-character-set=utf8 user=root password=123#3. 只針對(duì)mysql這個(gè)客戶端的配置,2中的是全局配置,而此處的則是只針對(duì)mysql這個(gè)命令的局部配置 [mysql] ;port=3306 ;default-character-set=utf8 user=egon password=4573#!!!如果沒有[mysql],則用戶在執(zhí)行mysql命令時(shí)的配置以[client]為準(zhǔn)?
轉(zhuǎn)載于:https://www.cnblogs.com/fangjie0410/p/7701210.html
總結(jié)
以上是生活随笔為你收集整理的mysql之存储引擎和文件配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三次贝塞尔曲线平滑多边形
- 下一篇: 页面提交插入到数据库 1.jsp