客戶端與伺服器連線 tcp/ip 命名管道和共享記憶體 unix域套接字檔案
處理請求包括:連線管理,解析與優化,儲存引擎
show engines;
create table 表名(
建表語句;
) engine = 儲存引擎名稱;
alter table 表名 engine = 儲存引擎名稱;
啟動選項
配置檔案路徑 配置檔案 defaults-filedefaults-extra-file
使用\`defaults-extra-file\`可以指定額外的配置檔案搜尋路徑,那些固定的配置檔案路徑也會被搜尋
系統變數
show variables like 'default_storag%'
作用範圍分為這兩種:global:全域性變數,影響伺服器的整體操作。
session(local) :會話變數,影響某個客戶端連線的操作。
設定語句一:set global default_storage_engine = myisam;
語句二:set @@global.default_storage_engine = myisam;
語句一:set session default_storage_engine = myisam;
語句二:set @@session.default_storage_engine = myisam;
語句三:set default_storage_engine = myisam;
set 系統變數名 = 值`和`set session 系統變數名 = 值`是等價的
狀態變數
show variables like 'character_set_server';
字符集 和 比較規則(排序規則)的應用
比方說utf8字符集預設的比較規則就是utf8_general_ci。
mysql有4個級別的字符集和比較規則,分別是:伺服器級別
通過啟動選項或者在伺服器程式執行過程中使用set語句修改這兩個變數的值
[server]
character_set_server=gbk
collation_server=gbk_chinese_ci
資料庫級別
mysql> create database charset_demo_db
-> character set gb2312
-> collate gb2312_chinese_ci;
query ok, 1 row affected (0.01 sec)
表級別mysql> create table t(
-> col varchar(10)
-> ) character set utf8 collate utf8_general_ci;
query ok, 0 rows affected (0.03 sec)
列級別create table 表名(
列名 字串型別 [character set 字符集名稱] [collate 比較規則名稱],
其他列...
alter table 表名 modify 列名 字串型別 [character set 字符集名稱] [collate 比較規則名稱];
編譯碼有關的系統變數character_set_client
伺服器解碼請求時使用的字符集
character_set_connection
伺服器執行過程中使用的字符集
character_set_results
伺服器向客戶端返回資料時使用的字符集
設定set names 字符集名; => 可以同時設定三個系統變數
配置檔案 設定啟動選項[client]
default-character-set=utf8
innodb
4種不同型別的行格式,分別是compact、redundant、dynamic和compressed行格式
create table 表名 (列的資訊) row_format=行格式名稱
alter table 表名 row_format=行格式名稱頁是mysql中磁碟和記憶體互動的基本單位,16kb, 也是mysql是管理儲存空間的基本單位。
compact
如果該可變字段允許儲存的最大位元組數(m×w)超過255位元組並且真實儲存的位元組數(l)超過127位元組,則使用2個位元組,否則使用1個位元組。
變長字段長度列表中只儲存值為非null的列內容占用的長度,值為null的列的長度是不儲存的
redundant 記錄的是偏移,沒有null值列表
dynamic,compressed不會在真實資料處儲存字串的前768個字,只記錄在其他頁面的位址
compressed會使用演算法壓縮
堆和棧深層理解
一 堆和棧的概念區別 堆 是大家共有的空間,分全域性堆和區域性堆。全域性堆就是所有沒有分配的空間,區域性堆就是使用者分配的空間。堆在作業系統對程序 初始化的時候分配,執行過程中也可以向系統要額外的堆,但是記得用完了要還給作業系統,要不然就是記憶體洩漏。堆裡面一般 放的是靜態資料,比如static的資...
深層理解 棧平衡原理
深層理解 棧平衡原理 底層是如何實現棧平衡的?在ios android作業系統中,經常會遇到入棧出棧的操作。那麼現在作業系統已經不需要我們去關心堆疊的操作。比如 ios中的arc模式,android中的jvm都會幫我們自動釋放記憶體,自動保持堆疊平衡。但是對於開發者來說,還是很有必要掌握堆疊平衡原理...
android中Logcat的深層理解
android的開發也可以歸類為嵌入式裝置的開發,即便不是嵌入式開發,依然要注意對記憶體和處理的使用。養成乙個好的習慣對自己的幫助是很大的。在log的原始碼中可以看到這樣的注釋 the order in terms of verbosity,from least to most is error,w...