在伺服器中每個連線所分配的記憶體主要由下面四個引數控制:
(1)sort_buffer_size連線進行排序時候分配該配置引數大小的記憶體進行排序操作,比如該大小設定為100m,如果有100個連線同時進行排序將分配10g的記憶體,很容易造成伺服器記憶體溢位;
(2)join_buffer_size定義mysql的每個執行緒所使用連線的緩衝區的大小,對於這個引數需要注意的是,如果乙個查詢中關聯了多張表,那麼就會為每個關聯分配乙個連線快取,所以每個查詢可能會有多個連線緩衝;
(3)read_buffer_size對myisam表進行全表掃瞄時分配的讀快取池的大小,mysql只會在有查詢需要時為該快取分配記憶體,分配的記憶體為配置引數指定記憶體的大小,大小一般為4k的倍數;
(4)read_rnd_buffer_size索引緩衝區的大小,有查詢需要時才分配記憶體,分配的大小為需要記憶體的大小,而不是配置引數的大小;
上面四個引數全部是為每個執行緒分配的,如果有一百個連線可能會分配100倍以上記憶體的和。
innodb_buffer_pool_size 快取池記憶體
innodb io相關配置
innodb_log_file_size 事務日誌單個檔案大小
innodb_log_file_group 事務日誌檔案個數
innodb_log_buffer_size 事務日誌緩衝區大小
推薦設定
innodb_flush_method=o_direct innodb重新整理方式
innodb_file_per_table=1 控制innodb如何使用表空間
innodb_doublewrite=1 是否使用雙寫快取
對於group by聚合操作,如果在select中的列,沒有在group by**現,那麼這個sql是不合法的,因為列不在group by從句中
該值影響自增長列的插入。預設設定下,插入0或null代表生成下乙個自增長值。如果使用者希望插入的值為0,而該列又是自增長的,那麼這個選項就有用了。
在該模式下,如果乙個值不能插入到乙個事務中,則中斷當前的操作,對非事務表不做限制
在嚴格模式下,不允許日期和月份為零
設定該值,mysql資料庫不允許插入零日期,插入零日期會丟擲錯誤而不是警告
在insert或update過程中,如果資料被零除,則產生錯誤而非警告。如果未給出該模式,那麼資料被零除時mysql返回null
禁止grant建立密碼為空的使用者
如果需要的儲存引擎被禁用或未編譯,那麼丟擲錯誤。不設定此值時,用預設的儲存引擎替代,並丟擲乙個異常
將"||"視為字串的連線操作符而非或運算子,這和oracle資料庫是一樣是,也和字串的拼接函式concat想類似
啟用ansi_quotes後,不能用雙引號來引用字串,因為它被解釋為識別符
mysql配置引數優化 mysql配置引數優化
最大連線數 優化 max connections 1000 table open cache 256 query cache type 1 查詢快取大小 query cache size 1m tmp table size 32m 執行緒快取數 thread cache size 8 關閉dns做反...
MySQL 引數配置
基本配置 你需要經常察看以下3個配置項。不然,可能很快就會出問題。innodb buffer pool size 這是你安裝完innodb後第乙個應該設定的選項。緩衝池是資料和索引快取的地方 這個值越大越好,這能保證你在大多數的讀取操作時使用的是記憶體而不是硬碟。典型的值是5 6gb 8gb記憶體 ...
mysql 檢視引數配置 Mysql 相關引數配置
一 慢查詢日誌配置 以下是開啟慢日誌的配置 單位為 s slow query log on slow query log file d mysql 8.0.21 winx64 slowlog slow.log long query time 0.001 log queries not using i...