1. 程式人生 > >【MySQL】MySQL儲存引擎

【MySQL】MySQL儲存引擎

儲存引擎

MySQL可以將資料以不同的技術儲存在檔案(記憶體)中,這種技術就稱為儲存引擎。

每一種儲存引擎使用不同的儲存機制、索引技巧、鎖定水平、最終提供廣泛而不同的功能。

MyISAM

InnoDB

Memory

CSV

Archive

併發控制

-當多個連線對記錄進行修改時保證資料的一致性和完整性。

 鎖

 共享鎖(讀鎖):在同一個時間段內,多個使用者可以讀取同一個資源,讀取過程中資料不會發生任何變化。 

排它鎖(寫鎖):在任何時候只能有一個使用者寫入資源,當進行寫資源時會阻塞其他的讀鎖或者寫鎖操作。

鎖顆粒

         表鎖,是一種開銷最小的鎖策略。

         行鎖,是一種開銷最大的鎖策略。(可能每一行都需要鎖)

事務

         事務用於保證資料庫的完整性。

事務的特性

原子性(Atomicity):事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼均不執行。

一致性(Consistency):事務的一致性指的是在一個事務執行之前和執行之後資料庫都必須處於一致性狀態。這種特性稱為事務的一致性。假如資料庫的狀態滿足所有的完整性約束,就說該資料庫是一致的。表B的欄位是從表A獲取,表A的欄位改變了,表B的相應欄位也需要改變,這就叫一致性。

例如完整性約束a+b=10,一個事務改變了a,那麼b也應隨之改變。

         隔離性(Isolation):分離性指併發的事務是相互隔離的。即一個事務內部的操作及正在操作的資料必須封鎖起來,不被其它企圖進行修改的事務看到。假如併發交叉執行的事務沒有任何控制,操縱相同的共享物件的多個併發事務的執行可能引起異常情況。

永續性(Durability):永續性意味著當系統或介質發生故障時,確保已提交事務的更新不能丟失。即一旦一個事務提交,DBMS保證它對資料庫中資料的改變應該是永久性的,即對已提交事務的更新能恢復。永續性通過資料庫備份和恢復來保證。

外來鍵

         是保證資料一致性的策略。

索引(普通索引、唯一索引、全文索引、btree索引、hash索引……)

         對資料表中的一列或多列的值進行排序的一種結構。

各種儲存引擎的特點


修改MySQL的儲存引擎

1.      通過修改MySQL的配置檔案實現

Default-storage-engine = engine

2.      通過建立資料表命令實現

Create TABLE table_name(

)ENGINE = engine;

3.      通過修改資料表命令實現

ALTER TABLE table_name ENGING [=] engine_name;


相關推薦

MySQLMySQL儲存引擎以及索引

一、儲存引擎 MySQL中的資料用各種不同的技術儲存在檔案中,這些技術中的每一種技術都使用不同的儲存機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。這些不同的技術以及配套的相關功能在 MySQL中被稱作儲存引擎(也稱作表型別)。 我的理解是,資料

MySQLMySQL儲存引擎

儲存引擎 MySQL可以將資料以不同的技術儲存在檔案(記憶體)中,這種技術就稱為儲存引擎。 每一種儲存引擎使用不同的儲存機制、索引技巧、鎖定水平、最終提供廣泛而不同的功能。 MyISAM InnoDB Memory CSV Archive 併發控制 -當多個連線對記錄

MySQL基礎入門學習14存儲引擎

nsis ont 過程 關系 ali 余額 bili 事務 atom 查看數據表的創建命令: 【存儲引擎】: MySQL可以將數據以不同的奇數存儲在文件(內存)中,這種技術就成為存儲引擎        每一種存儲引擎都使用了不同的存儲機制、索引技巧、鎖定水平,最

Mysql儲存過程來實現從指定日期到指定日期的批量建表吧~

DROP PROCEDURE IF EXISTS `copyTableByDate`; CREATE DEFINER=`root`@`localhost` PROCEDURE `copyTableByDate`( IN `table_` varchar(64),

MySQL資料庫 外來鍵、檢視、儲存過程、觸發器的優缺點

https://www.yiibai.com/mysql/introduction-sql-views.html 檢視 使用資料庫檢視的優點 資料庫檢視允許簡化複雜查詢:資料庫檢視由與許多基礎表相關聯的SQL語句定義。 您可以使用資料庫檢視來隱藏終端使用者和外部應用

MySQL建立儲存過程的一點小坑

背景 今天學習到了MySQL儲存過程的建立和使用,遇到了一點小坑 命令列小坑 一開始我使用的是命令列建立儲存過程(該儲存過程為返回資料表中最大年齡的使用者id) 程式碼如下 DELIMITER // CREATE PROCEDURE Largest_Age ( OUT Large

MysqlMySQL 使用者執行儲存過程的許可權

問題 執行儲存過程報錯: 原因 查詢資料: 1305錯誤,由於當前使用者沒用許可權,對使用者進行授權後可以執行。 解決 alter routine---修改與刪除儲存過程/函式 create routine--建立儲存過程/函式 execute--呼叫

轉載通過資料庫引擎來加速MySQL資料庫

 如果你是個賽車手,並且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫裡去換,那會是什麼感覺呢?MySQL資料庫為開發人員所做的就好像是按按鈕換引擎;它讓你選擇資料庫引擎,並給你一條簡單的途徑來切換它。   MySQL的自帶引擎肯定是夠用了,但是在有些情況下,其他的引擎可

MySQL InnoDB引擎B+樹索引簡單整理說明

前言 本文出處:http://www.cnblogs.com/wy123/p/7211742.html MySQL中的InnoDB引擎表索引型別有一下幾種(以下所說的索引,沒有特殊說明,均指InnoDB引擎表索引。)   0 = Secondary Index,二級索引,   1

MySQLMySQL切換資料庫data儲存目錄

1、首先查詢一下當前的資料庫儲存目錄,執行語句 show variables like 'datadir'; 預設的資料庫儲存目錄就是在安裝目錄下的data資料夾 2、修改目錄下的my.ini(這裡檔名一定要是my.ini,其他的檔名不會被讀取)檔案中的datadir後面的地

mysqlMysql 5.1.46開啟InnoDB引擎

眾所周知Mysql5.1.46預設引擎為Myisam,那如何開啟InnoDB引擎呢?本人在安裝資料庫並開啟InnoDB引擎時出現不少錯誤,先一一列舉僅供大家參考。 1. 系統環境 系統: C

javamysql+springMvc+easyui實現圖片的儲存和讀取顯示

需求描述 公司之前設計的稽核流程,稽核人一欄使用的是文字資訊。現根據甲方最新需求,在列印審批單時,需要在稽核人一欄顯示手寫簽名。 設計思路 設計獨立的簽名儲存模組 將使用者與簽名圖片進行關聯 將圖片資訊以blob型別儲存在資料庫中(因為本次需要儲存的

MYSQL-CLUSTER-7.5搭建數據庫集群

安裝教程 讀寫 固定 現在 note res 順序 遠程訪問 關閉 閱讀目錄 前言 mysql cluster中的幾個概念解釋 架構圖及說明 下載mysql cluster 安裝mysql cluster之前 安裝配置管理節點 安裝配置數據和mysql節點

轉載MySQL事務以及SELECT ... FOR UPDATE的使用

商品 tail ase -a base 我們 evel erl tel MySQL中的事務,默認是自動提交的,即autocommit = 1; 但是這樣的話,在某些情形中就會出現問題:比如: 如果你想一次性插入了1000條數據,mysql會commit1000次的, 如果我

mysql執行計劃介紹

sta 備註 dex 統計信息 行數 temp 方式 否則 獲取 原文地址:http://www.jb51.net/article/43306.htm 1.查看mysql執行計劃 explain SELECT * from shippingorder where

故障MySQL主從同步故障-Slave_SQL_Running: No

ack counter stop usr mysql-bin back data 連接 xid 轉自:http://www.linuxidc.com/Linux/2014-02/96945.htm 故障現象:進入slave服務器,運行:mysql> show slav

筆記mysql入門語句8條

oot rom mysql入門 -h 添加 values arc trunc gdb 1、連接到數據庫服務器 mysql -h host -uroot -pXXXX 2、查看所有庫 show databases; 3、選庫 use 庫名 4、查看庫下面的表 show tab

MySQL中,字符串和數值的比較

【坑】 mysql中 字符串和數值的比較 官方文檔:https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html原文:Comparison operations result in a value of 1 (TRUE), 0 (F

mysql的SQL_NO_CACHE(在查詢時不使用緩存)和sql_cache用法

his let 作用 upd 做了 ble effect table mea 轉自:http://www.169it.com/article/5994930453423417575.html 為了測試sql語句的效率,有時候要不用緩存來查詢。 使用 SELECT SQL

mysqlmysql 配置

mark mysql gen engine fault my.cnf def class ner 安裝完mysql後, 要及得配置一下 /etc/mysql/my.cnf 配置字符編碼為utf8 [client] default-character-set = utf8