資料庫問題總結

2021-09-07 09:58:54 字數 2177 閱讀 2474

1、mysql資料庫儲存原理

儲存的過程是乙個可程式設計的函式,在資料庫中建立並儲存,有以下優點:

1、儲存過程能實現較快的執行速度

2、儲存過程允許標準元件是程式設計。

3、儲存過程可以用流程控制語句編寫,有很強的靈活性,可以完成複雜的判斷 和較複雜的運算。

4、儲存過程可被作為一種安全機制來充分利用。

5、儲存過程能夠減少網路流量

2、事務的四大特性

1、原子性:事務中的全部操作是乙個不可分割對的整體,要麼全部執行成功,要麼全都不執行

2、一致性:當多個事務並行時,必須按照規定的順序序列執行,保持執行後結果的一致性

3、隔離性:多個事務之間是互不影響的,執行結果對其他事務而言是透明的

4、永續性:對於已提交事務執行後的結果,必須保證該事務對資料庫的修改不被丟失

3、常用的資料庫儲存引擎:

1、myisam,不支援事務,不支援行鎖,不支援外來鍵,不支援安全恢復,支援全文索引,支援延遲更新索引,極大提公升寫入效能;支援壓縮表,減少儲存空間

2、innodb,支援行鎖,支援外來鍵,支援事務,支援安全恢復,不支援全文索引

myisam適用select密集型的表,innodb適用於寫操作密集型的表

4、關於資料庫的優化:

1、myisam適用select密集型的表,innodb適用於寫操作密集型的表

2、配置主從,讀寫分離

3、對於單錶的資料量非常大的,可以分區分表

4、優化查詢語句,避免對null值判斷,考慮對where和order_by跟的字段建立索引

5、不要使用外來鍵,由程式控制

6、先分頁在join

7、盡量不使用唯一約束,由程式控制

8、使用快取,減少資料庫的io操作

4、資料庫索引:

1、索引的建立:

在建立表的時候新增索引

create table tablename(

id int(10) primary key,

content text,

name char(10) not null,

[unique] index name_index (name(4)))engion myisam default charse utf8;

在建立表以後新增索引

alter my_table add [unique] index my_index(my_text);

create index my_index on my_table(my_text);

根據索引查詢

select * from tablename where match(content) against('word1','word2',...);
刪除索引

drop my_index on tablename;
檢視表中的索引

show index from tablename
2、索引的實現原理:

索引的實現通常使用 b_tree(平衡搜尋多叉樹)。b_tree 索引加速了數 據訪問,因為儲存引擎不會再去掃瞄整張表得到需要的資料;相反,它從根節點開始,根節點儲存了子節點的指標,儲存引擎會根據指標快速尋找資料。

3、什麼時候要使用索引?

1、主鍵自動建立唯一索引;

2、經常作為查詢條件在where或者order by 語句**現的列要建立索引;

3、作為排序的列要建立索引;

4、查詢中與其他表關聯的字段,外來鍵關係建立索引

5、高併發條件下傾向組合索引;

4、什麼時候不要使用索引?

1、經常增刪改的列不要建立索引;

2、有大量重複的列不建立索引;

3、表記錄太少不要建立索引;

redis的用法:

1、用作快取,減少資料庫的i/o操作

2、利用set型別去重,

3、當做佇列使用,如celery,分布式爬蟲

4、**排行榜

5、購物車資料儲存

資料庫問題總結

我對昨晚資料庫公升級出現的問題現在總結一下 下邊是錯誤 sql0668n 原因碼為 1 所以不允許操作 sqlstate 57016 1.最根本的問題是load的問題 copy yes nonrecoverable 對於dms表空間,load預設為copy no 模式,此模式下,load完成後,表空...

MySQL資料庫亂碼問題總結

解決mysql資料庫亂碼問題總結 解決辦法 1 修改安裝檔案根目錄下的my.ini檔案 搜尋欄位default character set,設定其值為utf8 gbk之一 注意設定utf8的時候不能設成utf 8 注意 這個檔案裡不止一處要修改的,如果你把這個檔案裡default character...

資料庫連線問題的總結

對資料庫連線問題的一點總結 1.odbc,oledb,ado,adox的關係 odbc 曾經的資料庫通訊標準 oledb 在一切物件化的趨勢下,ms打算用它取代odbc.oledb分兩種 直接的oledb和面向odbc的oledb,後者架構在odbc上,這 樣沒有自己的oledb提供者的資料庫也可以...