乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      mysql_優(yōu)化參數(shù)整理

       印度阿三17 2021-01-11

      1. 連接層

      max_connections=1000         #*****
      最大并發(fā)連接數(shù)
      
      max_connect_errors=999999
      當(dāng)某一客戶端嘗試連接MySQL服務(wù)器,但是累計失?。ú还苁裁丛颍┰O(shè)置的次數(shù),則MySQL會無條件強制阻止此客戶端連接。
      
      wait_timeout=600             #*****
      設(shè)置非交互連接(就是指那些連接池方式、非客戶端方式連接的)的超時時間(單位秒,默認(rèn)是28800,就是8小時),超過這個時間,mysql服務(wù)器會主動切斷那些已經(jīng)連接的,但是狀態(tài)是sleep的連接。
      
      interactive_wait_timeout=3600
      針對交互式連接。所謂的交互式連接,即在mysql_real_connect()函數(shù)中使用了CLIENT_INTERACTIVE選項。
      說得直白一點,通過mysql客戶端連接數(shù)據(jù)庫是交互式連接,通過jdbc連接數(shù)據(jù)庫是非交互式連接。
      
      net_read_timeout  = 120
      數(shù)據(jù)讀取超時時間。在終止讀之前,從一個連接獲得數(shù)據(jù)而等待的時間秒數(shù);當(dāng)服務(wù)正在從客戶端讀取數(shù)據(jù)時,net_read_timeout控制何時超時。即客戶端執(zhí)行數(shù)據(jù)讀取,等待多少秒仍未執(zhí)行成功時自動斷開連接。 
      
      net_write_timeout = 120
      數(shù)據(jù)庫寫超時時間。和net_read_timeout意義類似,在終止寫之前,等待多少秒把block寫到連接;當(dāng)服務(wù)正在寫數(shù)據(jù)到客戶端時,net_write_timeout控制何時超時。
      
      max_allowed_packet= 32M      #*****
      限制server接受的數(shù)據(jù)包大小,最大1G
      

      2.server層

      **********************安全更新模式**************************
      sql_safe_updates                =1                 # *****
      在mysql中,如果在update和delete沒有加上where條件,數(shù)據(jù)將會全部修改。
      開啟安全模式后,當(dāng)沒有加where條件或where條件中列(column)沒有索引可用,則拒絕修改
      
      *************************慢日志****************************
      slow_query_log                  =ON
      開啟慢日志
      slow_query_log_file             =/data/3307/slow.log   # *****
      慢日志存儲路徑
      long_query_time                 =1                 # *****
      運行時間為多長則判定為慢,實際生產(chǎn)中一般設(shè)置在0.01~0.1之間(單位秒)
      log_queries_not_using_indexes   =ON                 # *****
      開啟記錄沒有使用索引的語句
      log_throttle_queries_not_using_indexes = 10         # *****
      因為沒有使用同樣索引而導(dǎo)致慢的語句只記錄10條
      
      ***********************會話級別緩沖區(qū)**************************
      **************不可設(shè)置過大,高并發(fā)時會占用很多內(nèi)存******************
      sort_buffer_size = 1M
      系統(tǒng)中對數(shù)據(jù)進(jìn)行排序的時候用到的Buffer,儲存行指針
      join_buffer_size = 1M
      系統(tǒng)中對數(shù)據(jù)進(jìn)行join的時候用到的Buffer
      read_buffer= 1M
      MySQL讀入緩沖區(qū)大小。對表進(jìn)行順序掃描的請求所分配的一個讀入緩沖區(qū).
      read_rnd_buffer_size            = 1M
      儲存排序的數(shù)據(jù),配合sort_buffer使用,MRR優(yōu)化器算法就是在read_rnd_buffer中進(jìn)行工作的.
      tmp_table_  = 16M
      max_heap_table_size = 16M
      兩個參數(shù)共同影響了sql執(zhí)行時生成臨時數(shù)據(jù)表的大小
      max_execution_time              = 10000
      用來控制select語句的最大執(zhí)行時間,如果超過這個時間,就終止該查詢。單位是毫秒,可以動態(tài)修改,分為session和global兩種級別,如果設(shè)置為0的話,則證明不設(shè)限制。
      
      *************************鎖等待****************************
      lock_wait_timeout               = 60                 # *****
      當(dāng)其他的SQL語句已經(jīng)持有了鎖,當(dāng)前SQL語句需要等待持有鎖的SQL語句執(zhí)行完畢釋放鎖之后才能執(zhí)行。當(dāng)申請的鎖等待時間超過參數(shù)的設(shè)定值時,系統(tǒng)會報LOCK_WAIT_TIMEOUT的錯誤。
      
      *************************庫表大小寫敏感****************************
      lower_case_table_names          =1                   # *****            
      默認(rèn)0,大小寫敏感。
      設(shè)置1,大小寫不敏感。創(chuàng)建的表,數(shù)據(jù)庫都是以小寫形式存放在磁盤上,對于sql語句都是轉(zhuǎn)換為小寫對表和DB進(jìn)行查找。
      設(shè)置2,創(chuàng)建的表和DB依據(jù)語句上格式存放,凡是查找都是轉(zhuǎn)換為小寫進(jìn)行。
      
      *************************線程相關(guān)****************************
      thread_cache_size               =64                  
      每建立一個連接,都需要一個線程來與之匹配。
      thread_cache_size用來緩存空閑的線程,以至不被銷毀,如果線程緩存中有空閑線程,這時候建立新連接,MYSQL就會很快的響應(yīng)連接請求。
      show global 里關(guān)于線程緩存有如下幾個狀態(tài)變量,這里作簡單解釋一下。
      Threads_cached :代表當(dāng)前此時此刻線程緩存中有多少空閑線程。
      Threads_connected :代表當(dāng)前已建立連接的數(shù)量,因為一個連接就需要一個線程,所以也可以看成當(dāng)前被使用的線程數(shù)。
      Threads_created :代表從最近一次服務(wù)啟動,已創(chuàng)建線程的數(shù)量。
      Threads_running :代表當(dāng)前激活的(非睡眠狀態(tài))線程數(shù)。并不是代表正在使用的線程數(shù),有時候連接已建立,但是連接處于sleep狀態(tài),這里相對應(yīng)的線程也是sleep狀態(tài)。
      最好將thread_cache_size設(shè)置成與threads_connected一樣。不過很少有情況將threads_cache_size設(shè)置成比200還大的數(shù)。
      
      log_timestamps                  =SYSTEM              # *****
      控制 error log、slow_log、genera log,等等記錄日志的顯示時間參數(shù)
      可以被設(shè)置的值有:UTC 和 SYSTEM,默認(rèn)使用 UTC,這樣會使得日志中記錄的時間比中國這邊的慢了8個小時,導(dǎo)致查看日志不方便。它還支持動態(tài)設(shè)置,不過建議大家在配置文件中就寫上,以免重啟之后造成不必要的麻煩。
      
      init_connect                    ="set names utf8"    # *****
      
      event_scheduler                 =OFF
      mysql中的定時任務(wù)
      
      secure-file-priv                =/tmp                # *****
      設(shè)置文件導(dǎo)出路徑
      
      binlog_expire_logs_seconds      =2592000             # *****
      binlog失效日期參數(shù)為 binlog_expire_logs_seconds,單位秒,默認(rèn)30天過期。
      
      sync_binlog                     =1                   # *****
      sync_binlog=0,當(dāng)事物提交之后,mysql不做fsync之類的刷新binlog_cache中的信息到磁盤,而讓filesystem自行決定什么時候來同步,或者cache滿了之后再同步。
      sync_binlog=n,每進(jìn)行n次事物提交后,mysql將進(jìn)行一次fsync之類的磁盤同步指令來將binlog_cache中的數(shù)據(jù)強制寫入磁盤。
      為了確保安全性,我們可以將sync_binlog設(shè)置為1,
      為了保證最價性能,我們可以將sync_binlog設(shè)置為0,
      
      log-bin                         =/data/3307/mysql-bin
      二進(jìn)制日志路徑及文件名前綴
      
      log-bin-index                   =/data/3307/mysql-bin.index
      二進(jìn)制日志索引文件
      
      max_binlog_size                 =500M
      二進(jìn)制日志達(dá)到設(shè)定值時滾動生成新日志,flush logs可以手動滾動
      
      binlog_format                   =ROW
      二進(jìn)制日志的格式
      STATEMENT模式(SBR)語句模式
      每一條會修改數(shù)據(jù)的sql語句會記錄到binlog中。優(yōu)點是并不需要記錄每一條sql語句和每一行的數(shù)據(jù)變化,減少了binlog日志量,節(jié)約IO,提高性能。缺點是在某些情況下會導(dǎo)致master-slave中的數(shù)據(jù)不一致(如sleep()函數(shù), last_insert_id(),以及user-defined functions(udf)等會出現(xiàn)問題)
      ROW模式(RBR)
      不記錄每條sql語句的上下文信息,僅需記錄哪條數(shù)據(jù)被修改了,修改成什么樣了。而且不會出現(xiàn)某些特定情況下的存儲過程、或function、或trigger的調(diào)用和觸發(fā)無法被正確復(fù)制的問題。缺點是會產(chǎn)生大量的日志,尤其是alter table的時候會讓日志暴漲。
      ③ MIXED模式(MBR)
      以上兩種模式的混合使用,一般的復(fù)制使用STATEMENT模式保存binlog,對于STATEMENT模式無法復(fù)制的操作使用ROW模式保存binlog,MySQL會根據(jù)執(zhí)行的SQL語句選擇日志保存方式。
      

      3.存儲引擎層

      transaction-isolation               ="READ-COMMITTED"    # *****
      隔離級別設(shè)置,隔離效果依次提高,并發(fā)性能依次下降
      read-uncommitted:讀未提交,會出現(xiàn)臟讀;
      read-committed:讀提交,杜絕臟讀,但不可重復(fù)讀;
      repeatable-read:可重復(fù)讀,不允許臟讀、不可重復(fù)讀,但會出現(xiàn)幻讀;
      serializable:串行化,以上都不會出現(xiàn)。
      
      innodb_data_home_dir                =/xxx
      共享表空間路徑
      
      innodb_log_group_home_dir           =/xxx
      日志組的路徑,默認(rèn)在數(shù)據(jù)目錄下
      innodb_log_file_size                =2048M
      redo日志的大小
      innodb_log_files_in_group           =3
      redo日志的數(shù)量
      
      innodb_flush_log_at_trx_commit      =1                   # *****
      雙1中的第二個1
      0:log buffer將每秒一次地寫入log file中,并且log file的flush(刷到磁盤)操作同時進(jìn)行。該模式下在事務(wù)提交的時候,不會主動觸發(fā)寫入磁盤的操作。
      1:每次事務(wù)提交時MySQL都會把log buffer的數(shù)據(jù)寫入log file,并且flush(刷到磁盤)中去,該模式為系統(tǒng)默認(rèn)。
      2:每次事務(wù)提交時MySQL都會把log buffer的數(shù)據(jù)寫入log file,但是flush(刷到磁盤)操作并不會同時進(jìn)行。該模式下,MySQL會每秒執(zhí)行一次 flush(刷到磁盤)操作。
      
      innodb_flush_method                 =O_DIRECT            # *****
      fdatasync模式(默認(rèn)):寫數(shù)據(jù)時,write這一步將數(shù)據(jù)文件和redo log 寫入到操作系統(tǒng)緩沖OS buffer中
      就會返回完成,真正完成是flush操作,buffer pool 和log buffer把文件和日志交給OS buffer去flush更新到磁盤。
      O_DSYNC模式:寫日志操作是在write這步完成,而數(shù)據(jù)文件的寫入是在flush這步通過fsync完成
      O_DIRECT模式:數(shù)據(jù)文件的寫入操作是直接從mysql innodb buffer到磁盤的,并不用通過操作系統(tǒng)的
      緩沖,而真正的完成也是在flush這步,日志還是要經(jīng)過OS緩沖
      

      在這里插入圖片描述

      innodb_io_capacity                  =1000                # *****
      控制當(dāng)刷新臟數(shù)據(jù)時MySQL每秒執(zhí)行的IO量,參數(shù)默認(rèn)是200,可以動態(tài)調(diào)整.可以設(shè)置為設(shè)備能達(dá)到的最大IOPS的50%
      
      innodb_io_capacity_max              =4000         
      在壓力下,控制當(dāng)刷新臟數(shù)據(jù)時MySQL每秒執(zhí)行的IO量,可以設(shè)置為設(shè)備能達(dá)到的最大IOPS
      
      innodb_buffer_pool_size             =64G                 # *****
      InnoDB緩沖池,用于多個目的:
      * 數(shù)據(jù)緩存 – 這絕對是它的最重要的目的
      * 索引緩存 – 這使用是的同一個緩沖池
      * 緩沖 – 更改的數(shù)據(jù)(通常稱為臟數(shù)據(jù))在被刷新到硬盤之前先存放到緩沖
      * 存儲內(nèi)部結(jié)構(gòu) – 一些結(jié)構(gòu)如自適應(yīng)哈希索引或者行鎖也都存儲在InnoDB緩沖池
      如果是單純的數(shù)據(jù)庫服務(wù)器,可以將其設(shè)置為物理內(nèi)存的80%以下.
      
      innodb_buffer_pool_instances        =4                   # *****
      可以開啟多個內(nèi)存緩沖池,把需要緩沖的數(shù)據(jù)hash到不同的緩沖池中.將 buffer pool 分成幾個區(qū),每個
      區(qū)用獨立的鎖保護(hù),這樣就減少了訪問 buffer pool 時需要上鎖的粒度,以提高性能。
      
      innodb_log_buffer_size              =64M                 # *****
      mysql事務(wù)日志文件(ib_logfile0)的大??;
      設(shè)置的太?。寒?dāng)一個日志文件寫滿后,innodb會自動切換到另外一個日志文件,而且會觸發(fā)數(shù)據(jù)庫的檢查點
      (Checkpoint),這會導(dǎo)致innodb緩存臟頁的小批量刷新,會明顯降低innodb的性能。由于日志切換更頻
      繁,也就直接導(dǎo)致更多的BUFFER FLUSH,由于日志切換的時候是不能BUFFER FLUSH的, BUFFER寫不下
      去,導(dǎo)致沒有多余的buffer 寫redo, 那么整個MYSQL就HANG住,還有一種情況是如果有一個大的事務(wù),把
      所有的日志文件寫滿了,還沒有寫完,這樣就會導(dǎo)致日志不能切換(因為實例恢復(fù)還需要,不能被循環(huán)復(fù)寫)
      這樣mysql就hang住了??梢愿鶕?jù)文件修改時間來判斷日志文件的旋轉(zhuǎn)頻率,旋轉(zhuǎn)頻率太頻繁,說明日志文件太小了。
      
      設(shè)置的太大:設(shè)置很大以后減少了checkpoint,并且由于redo log是順序I/O,大大提高了I/O性能。但是如果
      數(shù)據(jù)庫意外出現(xiàn)了問題,比如意外宕機,那么需要重放日志并且恢復(fù)已經(jīng)提交的事務(wù)(也就是實例恢復(fù)中的前滾, 
      利用redo重演變化來恢復(fù)buffer cache中的數(shù)據(jù)),如果日志很大,那么將會導(dǎo)致恢復(fù)時間很長。甚至到我們
      不能接受的程度。
      
      innodb_max_dirty_pages_pct          =85                  # *****
      控制buffer pool中臟頁的百分比,當(dāng)臟頁數(shù)量占比超過這個參數(shù)設(shè)置的值時,InnoDB會啟動刷臟頁的操作。默認(rèn)值為 75
      
      innodb_lock_wait_timeout            =10                  # *****
      事務(wù)鎖等待超時時間,單位秒
      
      innodb_open_files                   =63000               # *****
      指定InnoDB一次可以保持打開的.ibd文件的最大數(shù)目。最小值是10。默認(rèn)值300。
      
      innodb_page_cleaners                =4
      頁面清除程序線程數(shù),如果超過緩沖池實例數(shù),則innodb_page_cleaners將自動設(shè)置為與innodb_buffer_pool_instances相同的值
      
      innodb_sort_buffer_size             =64M
      在創(chuàng)建InnoDB索引時用于指定對數(shù)據(jù)排序的排序緩沖區(qū)的大小。利用這塊內(nèi)存把數(shù)據(jù)讀進(jìn)來進(jìn)行內(nèi)部排序然后寫入磁盤。這個參數(shù)只會在創(chuàng)建索引的過程中被使用,不會用在后面的維護(hù)操作;在索引創(chuàng)建完畢后innodb_sort_buffer會被釋放。
      
      innodb_print_all_deadlocks          =1                   #
      記錄死鎖日志到error.log
      
      innodb_rollback_on_timeout          =ON
      事務(wù)超時后回滾整個事務(wù)還是上一條語句
      
      innodb_deadlock_detect              =ON
      死鎖檢測
      

      4. 主從復(fù)制相關(guān)

      *************************relay_log******************************
      relay_log                       =/opt/log/mysql/blog/relay
      定義relay_log的位置和名稱,如果值為空,則默認(rèn)位置在數(shù)據(jù)文件的目錄
      
      relay_log_index                 =/opt/log/mysql/blog/relay.index
      定義relay_log的位置和名稱
      
      max_relay_log_size              =500M
      標(biāo)記relay log 允許的最大值,如果該值為0,則為默認(rèn)值max_binlog_size(1G)
      
      relay_log_recovery              =ON
      當(dāng)slave從庫宕機后,假如relay-log損壞了,導(dǎo)致一部分中繼日志沒有處理,則自動放棄所有未執(zhí)行的relay-log,并且重新從master上獲取日志,這樣就保證了relay-log的完整性。默認(rèn)情況下該功能是關(guān)閉的,將relay_log_recovery的值設(shè)置為 1時,可在slave從庫上開啟該功能,建議開啟。
      
      **********************半同步**************************
      rpl_semi_sync_master_enabled                =ON
      控制是否在主庫上啟用半同步復(fù)制,默認(rèn)值是0(關(guān)閉)
      
      rpl_semi_sync_master_timeout                =1000
      一個以毫秒為單位的值,用于控制主服務(wù)器等待來自從服務(wù)器的確認(rèn)提交并恢復(fù)到異步復(fù)制的時間,超過這個值就是超時。 默認(rèn)值是10000(10秒)。超時之后,就從半同步復(fù)制,返回到異步復(fù)制。
      
      rpl_semi_sync_master_trace_level            =32
      日志打印參數(shù),默認(rèn)即可
      
      rpl_semi_sync_master_wait_for_slave_count   =1
      必須等待至少多少個slave的ack信息,才可以提交
      
      rpl_semi_sync_master_wait_no_slave          =ON
      在沒有slave時,是否選擇等待
      
      rpl_semi_sync_master_wait_point             =AFTER_SYNC
      控制等待ack的邏輯處于整個事務(wù)提交過程的哪個階段,目前支持兩種模式
      AFTER_SYNC       ##增強半同步
      AFTER_COMMIT     ##普通半同步
      
      rpl_semi_sync_slave_enabled                 =ON
      slave半同步的開關(guān)
      
      rpl_semi_sync_slave_trace_level             =32
      salve節(jié)點半同步日志相關(guān)
      
      binlog_group_commit_sync_delay              =1
      表示binlog提交后等待延遲多少時間再同步到磁盤,默認(rèn)0,單位微妙,不延遲。設(shè)置延遲可以讓多個事務(wù)同一時刻提交,提高binlog組提交的并發(fā)數(shù)和效率,提高slave的吞吐量。
      
      binlog_group_commit_sync_no_delay_count     =1000
      表示等待延遲提交的最大事務(wù)數(shù),如果上面參數(shù)的時間沒到,但事務(wù)數(shù)到了,則直接同步到磁盤。若binlog_group_commit_sync_delay沒有開啟,則該參數(shù)也不會開啟。
      
      gtid_mode                       =ON
      enforce_gtid_consistency        =ON
      skip-slave-start                =1
      gtid開關(guān),以上三個參數(shù)同時開啟猜可以
      
      #read_only                      =ON
      #super_read_only                =ON
      只讀模式,從庫參數(shù),防止從庫誤寫入
      
      log_slave_updates               =ON
      1、從庫只開啟log-bin功能,不添加log-slave-updates參數(shù),從庫從主庫復(fù)制的數(shù)據(jù)不會寫入log-bin日志文件里。
      2、直接向從庫寫入數(shù)據(jù)時,是會寫入log-bin日志的。
      3、開啟log-slave-updates參數(shù)后,從庫從主庫復(fù)制的數(shù)據(jù)會寫入log-bin日志文件里。這也是該參數(shù)的功能。
      
      server_id                       =2330602
      
      report_host                     =xxxx
      向主庫報告從庫的ip
      report_port                     =3306
      向主庫報告從庫的端口
      
      slave_parallel_type                         =LOGICAL_CLOCK
      DATABASE(默認(rèn)值,基于庫的并行復(fù)制方式)
      LOGICAL_CLOCK(基于組提交的并行復(fù)制方式)
      
      slave_parallel_workers                      =4
      并發(fā)sql線程數(shù)量
      
      master_info_repository                      =TABLE
      relay_log_info_repository                   =TABLE
      多源復(fù)制從庫需要開啟的參數(shù)
      
      來源:https://www./content-2-817001.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多