數據庫零散知識點

1.定義列時,儘量定義爲not null類型,可以爲空的列索引 內存 cpu 保存都特別麻煩。

2.在查找表時採用整數主鍵而避免採用基於字符串的值進行關聯。

3.爲標識列選擇合適的數據類型非常重要。

   3.1. 當選擇標識列的類型時,不僅僅需要考慮【儲存類型】 還需要考慮mysql 對

      【這種類型怎麼執行計算和比較】。

例如:mysql 內部使用整數儲存ENUM和SET類型,比較的時候轉換爲字符串。

   3.2.一旦選擇一種類型,要確保在所有的關聯表中都使用相同的類型,類型之間要精確匹配,包括想UNSIGNED這樣的屬性。

   3.3.如果可能,應該儘量避免使用字符串作爲標識列,因爲他們很消耗空間【索引空間】,並且比數字類型慢。

         要完全避免隨機的字符串,--【導致update 和 insert 語句很慢】

         3.3.1.因爲插入值會隨機寫到索引的不同位置,導致使得insert 語句更慢。

         3.3.2.select 語句會變得很慢,因爲邏輯上相鄰的行會分佈在磁盤和內存的不同位置。

         3.3.3隨機導致緩存對所有類型的查詢語句效果都很差。

4.Mysql限制了每個關聯操作最多隻能有61張表,如果希望查詢執行的快速且併發性好,每個查詢最好在12張表以內做關聯。


5.範式的優點和缺點

   5.1.範式化的更新操作通常比反範式要快

   5.2 當數據較好的範式化時,就至於很少的重複數據,所以只需要修改更少的數據。

   5.3範式化的表通常更小,可以更好的放入到內存中,所以操作更快。

  範式化設計的schema的缺點通常需要關聯,稍微複雜一些的查詢在符合範式的schema上都可能需要至少一次關聯。

  

 6.加快alter table 操作的速度

     MYSQL 的ALTER TABLE 操作的性能對於大表來說是個大問題。MYSQL執行大部分修改表結構操作的方法

    是用新的結構創建一個空表,從舊錶查出所有數據插入新表,然後刪除舊錶


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章