mysql的優(yōu)化

如何優(yōu)化

1做盅、硬件配置
2缤削、數(shù)據(jù)庫表設(shè)計及查詢,存儲引擎吹榴,索引亭敢,查詢語句
3、橫向擴展:MySQL集群图筹、負載均衡帅刀、讀寫分離、增加緩存
4远剩、系統(tǒng)內(nèi)核參數(shù)優(yōu)化扣溺,IO優(yōu)化,還有mysql自己的配置文件
5民宿、數(shù)據(jù)庫維護

1娇妓、硬件配置

1、如果有條件一定要SSD固態(tài)硬盤代替SAS機械硬盤活鹰,將RAID級別調(diào)整為RAID1+0哈恰,相對于RAID1和RAID5有更好的讀寫性能,畢竟數(shù)據(jù)庫的壓力主要來自磁盤I/O方面
2志群、配置更大的內(nèi)存着绷,足夠大的內(nèi)存,是提高MySQL數(shù)據(jù)庫性能的方法之一
3:配置CPU相關(guān)(根據(jù)業(yè)務(wù)選擇)
1)CPU密集型:計算比較多锌云,OLTP (聯(lián)機事務(wù)處理)- 主頻很高的cpu荠医、核數(shù)還要多

2)IO密集型:查詢比較多,OLAP (聯(lián)機分析處理)- 核數(shù)要多桑涎,主頻不一定高的

2彬向、數(shù)據(jù)庫表設(shè)計及查詢,存儲引擎攻冷,索引娃胆,查詢語句

1、字段設(shè)計 字段類型的選擇等曼,設(shè)計規(guī)范里烦,范式凿蒜,常見設(shè)計案例
盡量使用整型表示字符串
盡可能選擇小的數(shù)據(jù)類型和指定短的長度
盡可能使用 not null
字段注釋要完整,見名知意
單表字段不宜過多(二三十個就極限了)
可以預(yù)留字段
2胁黑、存儲引擎
如果沒有特別的需求废封,使用默認的Innodb即可。
MyISAM:以讀寫插入為主的應(yīng)用程序丧蘸,比如博客系統(tǒng)漂洋、新聞門戶網(wǎng)站。
Innodb:更新(刪除)操作頻率也高触趴,或者要保證數(shù)據(jù)的完整性氮发;并發(fā)量高,支持事務(wù)和外鍵保證數(shù)據(jù)完整性冗懦。比如OA自動化辦公系統(tǒng)爽冕。
Memory:如果只是臨時存放數(shù)據(jù),數(shù)據(jù)量不大披蕉,并且不需要較高的數(shù)據(jù)安全性颈畸,可以選擇將數(shù)據(jù)保存在內(nèi)存中的Memory引擎,MySQL中使用該引擎作為臨時表没讲,存放查詢的中間結(jié)果眯娱。數(shù)據(jù)的處理速度很快但是安全性不高。
Archive:如果只有INSERT和SELECT操作爬凑,可以選擇Archive徙缴,Archive支持高并發(fā)的插入操作,但是本身不是事務(wù)安全的嘁信。Archive非常適合存儲歸檔數(shù)據(jù)于样,如記錄日志信息可以使用Archive
存儲引擎層(innodb基礎(chǔ)優(yōu)化參數(shù))

default-storage-engine

innodb_buffer_pool_size       # 沒有固定大小,50%測試值潘靖,看看情況再微調(diào)穿剖。但是盡量設(shè)置不要超過物理內(nèi)存70%

innodb_file_per_table=(1,0)

innodb_flush_log_at_trx_commit=(0,1,2) # 1是最安全的,0是性能最高卦溢,2折中

binlog_sync

Innodb_flush_method=(O_DIRECT, fdatasync)

innodb_log_buffer_size           # 100M以下

innodb_log_file_size               # 100M 以下

innodb_log_files_in_group       # 5個成員以下,一般2-3個夠用(iblogfile0-N)

innodb_max_dirty_pages_pct   # 達到百分之75的時候刷寫 內(nèi)存臟頁到磁盤糊余。

log_bin

max_binlog_cache_size                     # 可以不設(shè)置

max_binlog_size                               # 可以不設(shè)置

innodb_additional_mem_pool_size     #小于2G內(nèi)存的機器,推薦值是20M单寂。32G內(nèi)存以上100M

3贬芥、索引
索引是對數(shù)據(jù)庫表中一個或多個列的值進行排序的結(jié)構(gòu),建立索引有助于更快地獲取信息
建立索引的目的是加快對表中記錄的查找或排序宣决,索引也并非越多越好誓军,因為創(chuàng)建索引是要付出代價的:一是增加了數(shù)據(jù)庫的存儲空間,二是在插入和修改數(shù)據(jù)時要花費較多的時間維護索引疲扎。
組合索引:基于業(yè)務(wù)邏輯
如果條件經(jīng)常性出現(xiàn)在一起昵时,那么可以考慮將多字段索引升級為==復(fù)合索引==
如果通過增加個別字段的索引,就可以出現(xiàn)==索引覆蓋==椒丧,那么可以考慮為該字段建立索引
查詢時壹甥,不常用到的索引,應(yīng)該刪除掉
4壶熏、查詢語句
1.避免select *
在解析的過程中句柠,會將'*' 依次轉(zhuǎn)換成所有的列名,這個工作是通過查詢數(shù)據(jù)字典完成的棒假,這意味著將耗費更多的時間
2.order by 語句優(yōu)化
任何在Order by語句的非索引項或者有計算表達式都將降低查詢速度溯职。
方法:1.重寫order by語句以使用索引;
2.為所使用的列建立另外一個索引
3.絕對避免在order by子句中使用表達式
3.帽哑、GROUP BY語句優(yōu)化
提高GROUP BY 語句的效率, 可以通過將不需要的記錄在GROUP BY 之前過濾掉
4.用 exists 代替 in
很多時候用 exists 代替 in 是一個好的選擇:
select num from a where num in(select num from b)
用下面的語句替換:
select num from a where exists(select num from b where num=a.num)

3谜酒、橫向擴展:MySQL集群、讀寫分離妻枕、負載均衡僻族、增加緩存

1、Mysql集群(一般都是做主從)
一主一從
一主多從
多主多從
2屡谐、讀寫分離
一種方法是從代碼實現(xiàn)
一種是使用mycat
3述么、負載均衡(讀寫分離中讀的負載)
mysql官方提供了一個mysql負載的中間件,mysql_proxy愕掏,也需要在服務(wù)器上進行安裝度秘,修改配置文件(mysql的服務(wù)器IP),實質(zhì)與nginx類似,也是一個代理服務(wù)器
4饵撑、在配置文件中開啟緩存
在[mysqld]段中配置query_cache_type:
0:不開啟
1:開啟剑梳,默認緩存所有,需要在SQL語句中增加select sql-no-cache提示來放棄緩存
2:開啟肄梨,默認都不緩存阻荒,需要在SQL語句中增加select sql-cache來主動緩存(==常用==)
更改配置后需要重啟以使配置生效,重啟后可通過show variables like ‘query_cache_type’;來查看:

4众羡、系統(tǒng)內(nèi)核參數(shù)優(yōu)化侨赡,IO優(yōu)化

net.ipv4.tcp_fin_timeout = 30
# TIME_WAIT超時時間,默認是60s
net.ipv4.tcp_tw_reuse = 1    
# 1表示開啟復(fù)用粱侣,允許TIME_WAIT socket重新用于新的TCP連接羊壹,0表示關(guān)閉
net.ipv4.tcp_tw_recycle = 1   
# 1表示開啟TIME_WAIT socket快速回收,0表示關(guān)閉
net.ipv4.tcp_max_tw_buckets = 4096   
# 系統(tǒng)保持TIME_WAIT socket最大數(shù)量齐婴,如果超出這個數(shù)油猫,系統(tǒng)將隨機清除一些TIME_WAIT并打印警告信息
net.ipv4.tcp_max_syn_backlog = 4096
# 進入SYN隊列最大長度,加大隊列長度可容納更多的等待連接
在Linux系統(tǒng)中柠偶,如果進程打開的文件句柄數(shù)量超過系統(tǒng)默認值1024情妖,就會提示“too many files open”信息睬关,所以要調(diào)整打開文件句柄限制。
重啟永久生效:
# vi /etc/security/limits.conf  
* soft nofile 65535
* hard nofile 65535
當前用戶立即生效:
# ulimit -SHn 65535 

IO優(yōu)化
https://www.cnblogs.com/chenpingzhao/p/5119161.html

mysql自己的配置文件

[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql
#log-error  = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
#支持符號鏈接毡证,就是可以通過軟連接的方式电爹,管理其他目錄的數(shù)據(jù)庫,最好不要開啟料睛,當一個磁盤或分區(qū)空間不夠時丐箩,可以開啟該參數(shù)將數(shù)據(jù)存儲到其他的磁盤或分區(qū)。
#http://blog.csdn.net/moxiaomomo/article/details/17092871
symbolic-links=0

########basic settings########
server-id = 11 
port = 3306
user = mysql
#設(shè)置autocommit=0恤煞,則用戶將一直處于某個事務(wù)中屎勘,直到執(zhí)行一條commit提交或rollback語句才會結(jié)束當前事務(wù)重新開始一個新的事務(wù)。set autocommit=0的好處是在頻繁開啟事務(wù)的場景下居扒,減少一次begin的交互概漱。
autocommit = 1
#utf8mb4編碼是utf8編碼的超集,兼容utf8苔货,并且能存儲4字節(jié)的表情字符犀概。 
#采用utf8mb4編碼的好處是:存儲與獲取數(shù)據(jù)的時候,不用再考慮表情字符的編碼與解碼問題夜惭。
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 800
# 對于同一主機姻灶,如果有超出該參數(shù)值個數(shù)的中斷錯誤連接,則該主機將被禁止連接诈茧。如需對該主機進行解禁产喉,執(zhí)行:FLUSH HOST。
max_connect_errors = 1000
#數(shù)據(jù)庫隔離級別
transaction_isolation = READ-COMMITTED
#MySQL在完成某些join(連接)需求的時候敢会,為了減少參與join的“被驅(qū)動表”的讀取次數(shù)以提高性能曾沈,需要使用到j(luò)oin buffer來協(xié)助完成join操作當join buffer 太小,MySQL不會將該buffer存入磁盤文件而是先將join buffer中的結(jié)果與需求join的表進行操作鸥昏,然后清空join buffer中的數(shù)據(jù)塞俱,繼續(xù)將剩余的結(jié)果集寫入次buffer中
join_buffer_size = 128M
tmp_table_size = 64M
tmpdir = /tmp
#該值設(shè)置過小將導(dǎo)致單個記錄超過限制后寫入數(shù)據(jù)庫失敗,且后續(xù)記錄寫入也將失敗
max_allowed_packet = 64M
#mysql在關(guān)閉一個交互的連接之前所要等待的秒數(shù)
interactive_timeout = 1200
#mysql在關(guān)閉一個非交互的連接之前所要等待的秒數(shù)
wait_timeout = 600
#MySQL讀入緩沖區(qū)的大小
read_buffer_size = 16M
#MySQL的隨機讀緩沖區(qū)大小
read_rnd_buffer_size = 8M
#MySQL的順序讀緩沖區(qū)大小
sort_buffer_size = 8M
########log settings########
log_error = /var/log/docker_log/mysql/error.log
#開啟慢查詢?nèi)罩?slow_query_log = 1
#超出次設(shè)定值的SQL即被記錄到慢查詢?nèi)罩?long_query_time = 6
slow_query_log_file = /var/log/docker_log/mysql/slow.log
#表示記錄下沒有使用索引的查詢
log_queries_not_using_indexes = 1
#記錄管理語句
log_slow_admin_statements = 1
#開啟復(fù)制從庫復(fù)制的慢查詢的日志
log_slow_slave_statements = 1
#設(shè)置每分鐘增長的沒有使用索引查詢的日志數(shù)量
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
min_examined_row_limit = 100
########replication settings########
#將master.info和relay.info保存在表中
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
#當每進行n次事務(wù)提交之后吏垮,MySQL將進行一次fsync之類的磁盤同步指令來將binlog_cache中的數(shù)據(jù)強制寫入磁盤障涯。設(shè)置為零是讓系統(tǒng)自行決定
sync_binlog = 5
#開啟全局事務(wù)ID,GTID能夠保證讓一個從服務(wù)器到其他的從服務(wù)器那里實現(xiàn)數(shù)據(jù)復(fù)制而且能夠?qū)崿F(xiàn)數(shù)據(jù)整合的
gtid_mode = on
#開啟gtid膳汪,必須主從全開
enforce_gtid_consistency = 1
#從服務(wù)器的更新是否寫入二進制日志
log_slave_updates = 1
#三種模式 STATEMENT(有可能主從數(shù)據(jù)不一致唯蝶,日質(zhì)量小)遗嗽、ROW(產(chǎn)生大量二進制日志)粘我、MIXED
binlog_format = mixed
#relay-log日志記錄的是從服務(wù)器I/O線程將主服務(wù)器的二進制日志讀取過來記錄到從服務(wù)器本地文件,然后SQL線程會讀取relay-log日志的內(nèi)容并應(yīng)用到從服務(wù)器
relay_log = /var/log/docker_log/mysql/relay.log
relay_log_recovery = 1
#開啟簡單gtid痹换,開啟此項會提升mysql執(zhí)行恢復(fù)的性能
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
#這個參數(shù)在一開始初始化時就要加入my.cnf里征字,如果已經(jīng)創(chuàng)建了表都弹,再修改,啟動MySQL會報錯柔纵。最好為8K
#innodb_page_size = 16K
innodb_page_size = 8K
#數(shù)據(jù)緩沖區(qū)buffer pool大小缔杉,建議使用物理內(nèi)存的 75%
innodb_buffer_pool_size = 2G
#當buffer_pool的值較大的時候為1,較小的設(shè)置為8
innodb_buffer_pool_instances = 8
#運行時load緩沖池搁料,快速預(yù)熱緩沖池,將buffer pool的內(nèi)容(文件頁的索引)dump到文件中系羞,然后快速load到buffer pool中郭计。避免了數(shù)據(jù)庫的預(yù)熱過程,提高了應(yīng)用訪問的性能
innodb_buffer_pool_load_at_startup = 1
#運行時dump緩沖池
innodb_buffer_pool_dump_at_shutdown = 1
#在innodb中處理用戶查詢后椒振,其結(jié)果在內(nèi)存空間的緩沖池已經(jīng)發(fā)生變化昭伸,但是還未記錄到磁盤。這種頁面稱為臟頁澎迎,將臟頁記錄到磁盤的過程稱為刷臟
innodb_lru_scan_depth = 2000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
#事務(wù)等待獲取資源等待的最長時間庐杨,超過這個時間還未分配到資源則會返回應(yīng)用失敗,默認50s
innodb_lock_wait_timeout = 30
#日志組所在的路徑夹供,默認為data的home目錄灵份;
innodb_log_group_home_dir = /data/mysql/
#innodb_undo_directory = /data/mysql/undolog/
#這個參數(shù)控制著innodb數(shù)據(jù)文件及redo log的打開、刷寫模式哮洽,http://blog.csdn.net/gua___gua/article/details/44916207
#innodb_flush_method = O_DIRECT-不經(jīng)過系統(tǒng)緩存直接存入磁盤填渠,
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_strict_mode = 1
#innodb獨享表空間,有點很多鸟辅,缺點會導(dǎo)致單個表文件過大
#innodb_file_per_table = 1
#undo日志回滾段 默認為128
innodb_undo_logs = 128
#傳統(tǒng)機械硬盤建議使用氛什,而對于固態(tài)硬盤可以關(guān)閉
#innodb_flush_neighbors = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
#控制是否使用獨立purge線程
innodb_purge_threads = 1
#改為ON時,允許單列索引最大達到3072匪凉。否則最大為767
innodb_large_prefix = 1
innodb_thread_concurrency = 8
#開啟后會將所有的死鎖記錄到error_log中
innodb_print_all_deadlocks = 1
innodb_sort_buffer_size = 16M 
########semi sync replication settings########
#半同步復(fù)制
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000
#表示轉(zhuǎn)儲每個bp instance LRU上最熱的page的百分比枪眉。通過設(shè)置該參數(shù)可以減少轉(zhuǎn)儲的page數(shù)。
innodb_buffer_pool_dump_pct = 40
#刷臟的進程N-1
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
#控制回收(收縮)undo log的頻率.undo log空間在它的回滾段沒有得到釋放之前不會收縮再层,
innodb_purge_rseg_truncate_frequency = 128
log_timestamps=system
#該參數(shù)基于MySQL5.7 Group Replication組復(fù)制的贸铜,沒有使用不要設(shè)置
#transaction_write_set_extraction=MURMUR32
#http://www.cnblogs.com/hzhida/archive/2012/08/08/2628826.html
show_compatibility_56=on

常用配置優(yōu)化

連接層(基礎(chǔ)優(yōu)化)

設(shè)置合理的連接客戶和連接方式:

connect_timeout           # 設(shè)定遠程用戶必須回應(yīng)PORT類型數(shù)據(jù)連接的最大時間

max_user_connections      # 最大用戶連接數(shù)


max_connections:允許客戶端并發(fā)連接的最大數(shù)量,默認值是151树绩,一般將該參數(shù)設(shè)置為500-2000
max_connect_errors:如果客戶端嘗試連接的錯誤數(shù)量超過這個參數(shù)設(shè)置的值萨脑,則服務(wù)器不再接受新的客戶端連接〗确梗可以通過清空主機的緩存來解除服務(wù)器的這種阻止新連接的狀態(tài)渤早,通過FLUSH HOSTS或mysqladmin flush-hosts命令來清空緩存。這個參數(shù)的默認值是100瘫俊,一般將該參數(shù)設(shè)置為100000鹊杖。

interactive_timeout:Mysql關(guān)閉交互連接前的等待時間悴灵,單位是秒,默認是8小時骂蓖,建議不要將該參數(shù)設(shè)置超過24小時积瞒,即86400

wait_timeout:Mysql關(guān)閉非交互連接前的等待時間,單位是秒登下,默認是8小時茫孔,建議不要將該參數(shù)設(shè)置超過24小時,即86400

skip_name_resolve:如果這個參數(shù)設(shè)為OFF被芳,則MySQL服務(wù)在檢查客戶端連接的時候會解析主機名缰贝;如果這個參數(shù)設(shè)為ON,則MySQL服務(wù)只會使用IP畔濒,在這種情況下剩晴,授權(quán)表中的Host字段必須是IP地址或localhost。
這個參數(shù)默認是關(guān)閉的

back_log:MySQL服務(wù)器連接請求隊列所能處理的最大連接請求數(shù)侵状,如果隊列放滿了赞弥,后續(xù)的連接才會拒絕。當主要的MySQL線程在很短時間內(nèi)獲取大量連接請求時趣兄,這個參數(shù)會生效绽左。接下來,MySQL主線程會花費很短的時間去檢查連接诽俯,然后開啟新的線程妇菱。這個參數(shù)指定了MySQL的TCP/IP監(jiān)聽隊列的大小。如果MySQL服務(wù)器在短時間內(nèi)有大量的連接暴区,可以增加這個參數(shù)闯团。
文件相關(guān)參數(shù)sync_binlog:控制二進制日志被同步到磁盤前二進制日志提交組的數(shù)量。當這個參數(shù)為0的時候仙粱,二進制日志不會被同步到磁盤房交;當這個參數(shù)設(shè)為0以上的數(shù)值時,就會有設(shè)置該數(shù)值的二進制提交組定期同步日志到磁盤伐割。當這個參數(shù)設(shè)為1的時候候味,所有事務(wù)在提交前會被同步到二進制日志中,因而即使MySQL服務(wù)器發(fā)生意外重啟隔心,任何二進制日志中沒有的事務(wù)只會處于準備狀態(tài)白群,這會導(dǎo)致MySQL服務(wù)器自動恢復(fù)以回滾這些事務(wù)。這樣就會保證二進制日志不會丟失事務(wù)硬霍,是最安全的選項帜慢;同時由于增加了磁盤寫,這對性能有一定降低。將這個參數(shù)設(shè)為1以上的數(shù)值會提高數(shù)據(jù)庫的性能粱玲,但同時會伴隨數(shù)據(jù)丟失的風險躬柬。建議將該參數(shù)設(shè)為2、4抽减、6允青、8、16卵沉。

expire_logs_days:二進制日志自動刪掉的時間間隔颠锉。默認值為0,代表不會自動刪除二進制日志史汗。想手動刪除二進制日志木柬,可以執(zhí)行 PURGE BINARY LOGS。

max_binlog_size:二進制日志文件的最大容量淹办,當寫入的二進制日志超過這個值的時候,會完成當前二進制的寫入恶复,向新的二進制日志寫入日志怜森。這個參數(shù)最小值時4096字節(jié);最大值和默認值時1GB谤牡。相同事務(wù)中的語句都會寫入同一個二進制日志副硅,當一個事務(wù)很大時,二進制日志實際的大小會超過max_binlog_size參數(shù)設(shè)置的值翅萤。如果max_relay_log_size參數(shù)設(shè)為0恐疲,則max_relay_log_size參數(shù)會使用和max_binlog_size參數(shù)同樣的大小。建議將此參數(shù)設(shè)為512M套么。
比較高級
thread_concurrency:# 并發(fā)線程數(shù)量個數(shù)

sort_buffer_size:# 排序緩存

read_buffer_size:# 順序讀取緩存

read_rnd_buffer_size:# 隨機讀取緩存

key_buffer_size:# 索引緩存

thread_cache_size:# 線程池緩存大小(1G—>8, 2G—>16, 3G—>32, >3G—>64)

5培己、數(shù)據(jù)庫維護

1、數(shù)據(jù)庫備份
備份數(shù)據(jù)庫是最基本的工作胚泌,也是最重要的省咨,否則后果很嚴重,你懂得玷室!高頻率的備份策略零蓉,選用一個穩(wěn)定快速的工具至關(guān)重要。數(shù)據(jù)庫大小在2G以內(nèi)穷缤,建議使用官方的邏輯備份工具mysqldump敌蜂。超過2G以上,建議使用percona公司的物理備份工具xtrabackup津肛,否則慢的跟蝸牛似得章喉。這兩個工具都支持InnoDB存儲引擎下熱備,不影響業(yè)務(wù)讀寫操作。
2囊陡、開啟慢查詢?nèi)罩?/p>

mysql> set global slow-query-log=on  
# 開啟慢查詢?nèi)罩?
mysql> set global slow_query_log_file='/var/log/mysql/mysql-slow.log';  
# 指定慢查詢?nèi)罩疚募恢?
mysql> set global log_queries_not_using_indexes=on;   
# 記錄沒有使用索引的查詢 
mysql> set global long_query_time=1;   
# 只記錄處理時間1s以上的慢查詢
分析慢查詢?nèi)罩痉技ǎ梢允褂肕ySQL自帶的mysqldumpslow工具,分析的日志較為簡單撞反。
mysqldumpslow -t 3 /var/log/mysql/mysql-slow.log    
# 查看最慢的前三個查詢
也可以使用percona公司的pt-query-digest工具妥色,日志分析功能全面,可分析slow log遏片、binlog嘹害、general log。
分析慢查詢?nèi)罩荆簆t-query-digest /var/log/mysql/mysql-slow.log
分析binlog日志:mysqlbinlog mysql-bin.000001 >mysql-bin.000001.sql 
pt-query-digest --type=binlog mysql-bin.000001.sql 
分析普通日志:pt-query-digest --type=genlog localhost.log

3吮便、數(shù)據(jù)庫修復(fù)
有時候MySQL服務(wù)器突然斷電笔呀、異常關(guān)閉,會導(dǎo)致表損壞髓需,無法讀取表數(shù)據(jù)许师。這時就可以用到MySQL自帶的兩個工具進行修復(fù),myisamchk和mysqlcheck僚匆。前者只能修復(fù)MyISAM表微渠,并且停止數(shù)據(jù)庫,后者MyISAM和InnoDB都可以咧擂,在線修復(fù)逞盆。
注意:修復(fù)前最好先備份數(shù)據(jù)庫。
mysql遇到的問題
http://www.reibang.com/p/1b3d0e534032

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末松申,一起剝皮案震驚了整個濱河市云芦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贸桶,老刑警劉巖舅逸,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刨啸,居然都是意外死亡堡赔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門设联,熙熙樓的掌柜王于貴愁眉苦臉地迎上來善已,“玉大人,你說我怎么就攤上這事离例』煌牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵宫蛆,是天一觀的道長艘包。 經(jīng)常有香客問我的猛,道長,這世上最難降的妖魔是什么想虎? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任卦尊,我火速辦了婚禮,結(jié)果婚禮上舌厨,老公的妹妹穿的比我還像新娘岂却。我一直安慰自己,他們只是感情好裙椭,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布躏哩。 她就那樣靜靜地躺著,像睡著了一般揉燃。 火紅的嫁衣襯著肌膚如雪扫尺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天炊汤,我揣著相機與錄音正驻,去河邊找鬼。 笑死抢腐,一個胖子當著我的面吹牛拨拓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播氓栈,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼婿着!你這毒婦竟也來了授瘦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤竟宋,失蹤者是張志新(化名)和其女友劉穎提完,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丘侠,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡徒欣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜗字。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片打肝。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挪捕,靈堂內(nèi)的尸體忽然破棺而出粗梭,到底是詐尸還是另有隱情,我是刑警寧澤级零,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布断医,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鉴嗤。R本人自食惡果不足惜斩启,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醉锅。 院中可真熱鬧兔簇,春花似錦、人聲如沸荣挨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽默垄。三九已至此虑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間口锭,已是汗流浹背朦前。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鹃操,地道東北人韭寸。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像荆隘,于是被迫代替她去往敵國和親恩伺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 系統(tǒng)層面(基本不用動椰拒,看了下晶渠,買的云服務(wù)器基本都已經(jīng)優(yōu)化過了) 內(nèi)核相關(guān)參數(shù)(/etc/sysctl.conf) ...
    神奇大葉子閱讀 2,005評論 0 4
  • MySQL不權(quán)威總結(jié) 歡迎閱讀 本文并非事無巨細的mysql學習資料,而是選擇其中重要燃观、困難褒脯、易錯的部分進行系統(tǒng)地...
    liufxlucky365閱讀 2,591評論 0 26
  • 索引 數(shù)據(jù)庫中的查詢操作非常普遍番川,索引就是提升查找速度的一種手段 索引的類型 從數(shù)據(jù)結(jié)構(gòu)角度分 1.B+索引:傳統(tǒng)...
    一凡呀閱讀 2,919評論 0 8
  • 這篇文章主要涉及到MySQL的知識點: 索引(包括分類及優(yōu)化方式,失效條件脊框,底層結(jié)構(gòu)) sql語法(join颁督,un...
    一根薯條閱讀 2,712評論 0 8
  • 一 OS系統(tǒng)優(yōu)化 1 內(nèi)核優(yōu)化 1)IO調(diào)度優(yōu)化 調(diào)整Linux默認的IO調(diào)度算法. IO調(diào)度器的總體目標是希望讓...
    PennLi閱讀 580評論 0 2