




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Mysql數據庫使用基礎1. 安裝參數說明:./configure -prefix=/web/mysql 指定安裝目錄-without-debug 去除debug模式-with-extra-charsets=gb2312 添加gb2312中文字符支持-with -charsets=默認中文字符支持-enable-assembler 使用一些字符函數的匯編版本-without-isam 去掉isam表類型支持 現在很少用了 isam表是一種依賴平臺的表-without-innodb 去掉innodb表支持 innodb是一種支持事務處理的表,適合企業級應用-with-pthread 強制使用pt
2、hread庫(posix線程庫)-enable-thread-safe-client 以線程方式編譯客戶端-with-client-ldflags=-all-static -with-mysqld-ldflags=-all-static 以純靜態方式編譯服務端和客戶端-with-tcp-port=3306 端口號-with-mysqld-user=work 用戶-with-unix-socket-path將MYSQL_UNIX_PORT環境變量設置為Unix套接字文件的路徑 ,localhost的連接通常是通過UNIX域的套接字文件進行的,在Unix中,如果你在同一臺機器上運行服務器和客戶端,
3、連接到localhost。連接到的localhost的Unix連接使用Unix套接字文件而不是TCP/IP2. f配置文件說明mysqldport = 3306serverid = 1 socket = /tmp/mysql.sockskip-locking# 避免MySQL的外部鎖定,減少出錯幾率增強穩定性。skip-name-resolve禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。但需要注意,如果開啟該選項,則所有遠程主機連接授權都要使用IP地址方式,否則MySQL將無法正常處理連接請求! back_log = 384指定MySQL可能的連
4、接數量。當MySQL主線程在很短的時間內接收到非常多的連接請求,該參數生效,主線程花費很短的時間檢查連接并且啟動一個新線程。 back_log參數的值指出在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆棧中。 如果系統在一個短時間內有很多連接,則需要增大該參數的值,該參數值指定到來的TCP/IP連接的偵聽隊列的大小。不同的操作系統在這個隊列大小上有它自 己的限制。 試圖設定back_log高于你的操作系統的限制將是無效的。默認值為50。對于Linux系統推薦設置為小于512的整數。 key_buffer_size = 256M# key_buffer_size指定用于索引的緩
5、沖區大小,增加它可得到更好的索引處理性能。對于內存在4GB左右的服務器該參數可設置為256M或384M。注意:該參數值設置的過大反而會是服務器整體效率降低! max_allowed_packet = 4Mthread_stack = 256Ktable_cache = 128Ksort_buffer_size = 6M查詢排序時所能使用的緩沖區大小。注意:該參數對應的分配內存是每連接獨占!如果有100個連接,那么實際分配的總共排序緩沖區大小為100 6 600MB。所以,對于內存在4GB左右的服務器推薦設置為6-8M。 read_buffer_size = 4M讀查詢操作所能使用的緩沖區大小。
6、和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享! join_buffer_size = 8M聯合查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享!myisam_sort_buffer_size = 64Mtable_cache = 512thread_cache_size = 64query_cache_size = 64M指定MySQL查詢緩沖區的大小。可以通過在MySQL控制臺執行以下命令觀察: 代碼:# SHOW VARIABLES LIKE %query_cache%;# SHOW STATUS LIK
7、E Qcache%;如果Qcache_lowmem_prunes的值非常大,則表明經常出現緩沖不夠的情況;如果Qcache_hits的值非常大,則表明查詢緩沖使用非常頻繁,如果該值較小反而會影響效率,那么可以考慮不用查詢緩沖;Qcache_free_blocks,如果該值非常大,則表明緩沖區中碎片很多。 tmp_table_size = 256Mmax_connections = 768指定MySQL允許的最大連接進程數。如果在訪問論壇時經常出現Too Many Connections的錯誤提 示,則需要增大該參數值。 max_connect_errors = 10000000wait_tim
8、eout = 10指定一個請求的最大連接時間,對于4GB左右內存的服務器可以設置為5-10。 thread_concurrency = 8該參數取值為服務器邏輯CPU數量2,在本例中,服務器有2顆物理CPU,而每顆物理CPU又支持H.T超線程,所以實際取值為4 2 8 skip-networking開啟該選項可以徹底關閉MySQL的TCP/IP連接方式,如果WEB服務器是以遠程連接的方式訪問MySQL數據庫服務器則不要開啟該選項!否則將無法正常連接!3. phpMyAdmin解壓phpMyAdmin-*.*.*.tar.gz到apache/htdocs中修改其下的config.inc.php文
9、件中如下內容$cfgServers1host=localhost;(系統默認主機名為localhost不需要修改)$cfgServers1user=數據庫管理員名;$cfgServers1password=密碼;$cfgServers1only_db=數據庫(數據庫管理員名_db);4. innodb和mysiam的區別InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優缺點,視具體應用而定。基本的差別為:MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供
10、事務支持已經外部鍵等高級數據庫功能。MyIASM是IASM表的新版本,有如下擴展: 二進制層次的可移植性。 NULL列索引。 對變長行比ISAM表有更少的碎片。 支持大文件。 更好的索引壓縮。 更好的鍵嗎統計分布。 更好和更快的auto_increment處理。 以下是一些細節和具體實現的差別:1.InnoDB不支持FULLTEXT類型的索引。2.InnoDB 中不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數即可。注意的是,當count(*)語句包含 where條件
11、時,兩種表的操作是一樣的。3.對于AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯合索引。4.DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。5.LOAD TABLE FROM MASTER操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導入數據后再改成InnoDB表,但是對于使用的額外的InnoDB特性(例如外鍵)的表不適用。另外,InnoDB表的行鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的范圍,InnoDB表同樣會
12、鎖全表,例如update table set num=1 where name like “%aaa%”任何一種表都不是萬能的,只用恰當的針對業務類型來選擇合適的表類型,才能最大的發揮MySQL的性能優勢。5. bin-log的作用使用mysqlbinlog命令查看binlog日志內容,binlog日志為二進制文件,運行過程中會產生 binlog.000001 以及 binlog.index,前面的文件是 mysqld 記錄所有對數據的更新操作,后面的文件則是所有 binlog 的索引,都不能輕易刪除。6. 索引普通索引:沒有唯一性的限制 唯一性索引:索引列必須唯一主健:主鍵是一種唯一性索引,
13、但它必須指定為“PRIMARY KEY”。每個表只能有一個主鍵 全文索引:全文索引可以在VARCHAR或者TEXT類型的列上創建 索引的建立是需要磁盤空間的,并且當數據增加、更改、刪除時,索引有可能會重建,這樣會大幅度會降低數據維護效率7. 數據的導入導出BACK TABLE tbl_name TO /tmp/db_name/;RESTORE TABLE FROM /tmp/db_name/;不推薦使用,不拷貝索引文件,恢復慢SELECT INTO OUTFILE /tmp/db_name/tbl_name.txt FROM tbl_name;LOAD DATA INFILE /tmp/db_
14、name/tbl_name.txt INTO TABLE tbl_name;恢復前確認表已經存在Binlog恢復:./mysqlbinlog /tmp/binlog.000001 | mysql -uroot -p db_nameMysqldump常用方式-compatible=name 它告訴 mysqldump,導出的數據將和哪種數據庫或哪個舊版本的 MySQL 服務器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、 no_tables_options、no_field_opti
15、ons 等,要使用幾個值,用逗號將它們隔開。當然了,它并不保證能完全兼容,而是盡量兼容。 -complete-insert,-c 導出的數據采用包含字段名的完整 INSERT 方式,也就是把所有的值都寫在一行。這么做能提高插入效率,但是可能會受到 max_allowed_packet 參數的影響而導致插入失敗。因此,需要謹慎使用該參數。 -default-character-set=charset 指定導出數據時采用何種字符集,如果數據表不是采用默認的 latin1 字符集的話,那么導出時必須指定該選項,否則再次導入數據后將產生亂碼問題。 -disable-keys 告訴 mysqldump
16、在 INSERT 語句的開頭和結尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因為它是在插入完所有數據后才重建索引的。該選項只適合 MyISAM 表。 -extended-insert = true|false 默認情況下,mysqldump 開啟 -complete-insert 模式,因此不想用它的的話,就使用本選項,設定它的值為 false 即可。 -hex-blob 使用十六進制格式導出二進制字符串字段。如果有二進
17、制數據就必須使用本選項。影響到的字段類型有 BINARY、VARBINARY、BLOB。 -lock-all-tables,-x 在開始導出之前,提交請求鎖定所有數據庫中的所有表,以保證數據的一致性。這是一個全局讀鎖,并且自動關閉 -single-transaction 和 -lock-tables 選項。 -lock-tables 它和 -lock-all-tables 類似,不過是鎖定當前導出的數據表,而不是一下子鎖定全部庫下的表。本選項只適用于 MyISAM 表,如果是 Innodb 表可以用 -single-transaction 選項。 -no-create-info,-t 只導出數
18、據,而不添加 CREATE TABLE 語句。 -no-data,-d 不導出任何數據,只導出數據庫表結構。 -opt 這只是一個快捷選項,等同于同時添加 -add-drop-tables -add-locking -create-option -disable-keys -extended-insert -lock-tables -quick -set-charset 選項。本選項能讓 mysqldump 很快的導出數據,并且導出的數據能很快導回。該選項默認開啟,但可以用 -skip-opt 禁用。注意,如果運行 mysqldump 沒有指定 -quick 或 -opt 選項,則會將整個結果
19、集放在內存中。如果導出大數據庫的話可能會出現問題。 -quick,-q 該選項在導出大表時很有用,它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄后將它們緩存到內存中。 -routines,-R 導出存儲過程以及自定義函數。 -single-transaction 該選項在導出數據之前提交一個 BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用于事務表,例如 InnoDB 和 BDB。本選項和 -lock-tables 選項是互斥的,因為 LOCK TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用
20、-quick 選項。 -triggers 同時導出觸發器。該選項默認啟用,用 -skip-triggers 禁用它。 ./mysqldump -uroot -opt database db_name db_name.sql./mysql uroot p db_name db_name.sqlmysqlhotcopy它是備份數據庫或單個表的最快的途徑,但它只能運行在數據庫文件(包括數據表定義文件、數據文件、索引文件)所在的機器上。mysqlhotcopy 只能用于備份 MyISAM,并且只能運行在 類Unix 和 NetWare 系統上。8. mysql錯誤碼含義1005:創建表失敗1006:創
21、建數據庫失敗1007:數據庫已存在,創建數據庫失敗1008:數據庫不存在,刪除數據庫失敗1009:不能刪除數據庫文件導致刪除數據庫失敗1010:不能刪除數據目錄導致刪除數據庫失敗1011:刪除數據庫文件失敗1012:不能讀取系統表中的記錄1020:記錄已被其他用戶修改1021:硬盤剩余空間不足,請加大硬盤可用空間1022:關鍵字重復,更改記錄失敗1023:關閉時發生錯誤1024:讀文件錯誤1025:更改名字時發生錯誤1026:寫文件錯誤1032:記錄不存在1036:數據表是只讀的,不能對它進行修改1037:系統內存不足,請重啟數據庫或重啟服務器1038:用于排序的內存不足,請增大排序緩沖區10
22、40:已到達數據庫的最大連接數,請加大數據庫可用連接數1041:系統內存不足1042:無效的主機名1043:無效連接1044:當前用戶沒有訪問數據庫的權限1045:不能連接數據庫,用戶名或密碼錯誤1048:字段不能為空1049:數據庫不存在1050:數據表已存在1051:數據表不存在1054:字段不存在1065:無效的SQL語句,SQL語句為空1081:不能建立Socket連接1114:數據表已滿,不能容納任何記錄1116:打開的數據表太多1129:數據庫出現異常,請重啟數據庫1130:連接數據庫失敗,沒有連接數據庫的權限1133:數據庫用戶不存在1141:當前用戶無權訪問數據庫1142:當前
23、用戶無權訪問數據表1143:當前用戶無權訪問數據表中的字段1146:數據表不存在1147:未定義用戶對數據表的訪問權限1149:SQL語句語法錯誤1158:網絡錯誤,出現讀錯誤,請檢查網絡連接狀況1159:網絡錯誤,讀超時,請檢查網絡連接狀況1160:網絡錯誤,出現寫錯誤,請檢查網絡連接狀況1161:網絡錯誤,寫超時,請檢查網絡連接狀況1062:字段值重復,入庫失敗1169:字段值重復,更新記錄失敗1177:打開數據表失敗1180:提交事務失敗1181:回滾事務失敗1203:當前用戶和數據庫建立的連接已到達數據庫的最大連接數,請增大可用的數據庫連接數或重啟數據庫1205:加鎖超時1211:當前用戶沒有創建用戶的權限1216:外鍵約束檢查失敗,更新子表記錄失敗1217:外鍵約束檢查失敗,刪除或修改主表記錄失敗1226:當前用戶使用的資源已超過所允許的資源,請重啟數據庫或重啟服務器1227:權限不足,您無權進行此操作1235:MySQL版本過低,不具有本功能9. mysql常見的一些有用的選項和命令mysqld -開啟日志支持-log -log-update-log-long-formartmysqlgrant all on database.* to user identified by password 新建一u
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- AI賦能高校思政教育的策略及實施路徑
- 散文的鑒賞技巧:初中語文高級教學
- 寫人繪形畫影的繪畫作文(12篇)
- 上海建平中學高一(下)期末語文試題及答案
- 我心中的老師抒情作文5篇
- 描寫月全食作文八年級(8篇)
- 廉頗藺相如列傳故事解析:初中語文教案
- 案件執行協議書
- 詳細工作經歷及崗位證明文書(6篇)
- 公交公司學雷鋒活動方案
- 腫瘤科新護士入科培訓和護理常規
- 第4章 頜位(雙語)
- 課程綜述(數電)
- 塔吊負荷試驗方案
- 購買社區基本公共養老、青少年活動服務實施方案
- 傷口和傷口敷料基礎知識.ppt
- 安徽省中等職業學校學歷證明書辦理申請表
- 《慢性腎臟病》PPT課件.ppt
- 例析物理競賽中純電阻電路的簡化和等效變換
- 六年級下冊美術課件第13課《祖國美景知多少》浙美版
- 智能照明系統的外文文獻原稿和譯文.doc
評論
0/150
提交評論