Time of Update: 2018-12-08
公司網站訪問量越來越大,MySQL自然成為瓶頸,因此最近我一直在研究 MySQL 的最佳化,第一步自然想到的是 MySQL 系統參數的最佳化,作為一個訪問量很大的網站(日20萬人次以上)的資料庫系統,不可能指望 MySQL 預設的系統參數能夠讓 MySQL運行得非常順暢。以下的文章主要介紹的是對MySQL伺服器的最佳化配置的時機操作步驟,同時本文也介紹了MySQL伺服器的最佳化配置的實際應用代碼,如果你對其相關的實際應用感興趣的話,你就可以點擊以下的文章對其進行瞭解。
Time of Update: 2018-12-08
在Apache, PHP, MySQL的體系架構中,MySQL對於效能的影響最大,也是關鍵的核心部分。對於Discuz!論壇程式也是如此,MySQL的設定是否合理最佳化,直接影響到論壇的速度和承載量!同時,MySQL也是最佳化難度最大的一個部分,不但需要理解一些MySQL專業知識,同時還需要長時間的觀察統計並且根據經驗進行判斷,然後設定合理的參數。
Time of Update: 2018-12-08
方法一: 1.導表結構 使用MySQL產生create指令碼的方法。找到產生要匯出的指令碼,按MySQL的文法修改一下到MySQL資料庫中建立該表的列結構什麼的。 2.導表資料 在MSSQL端使用bcp匯出文字檔: bcp "Select * FROM dbname.dbo.tablename;" queryout tablename.txt -c -Slocalhost\db2005 -Usa
Time of Update: 2018-12-08
還原一個資料庫:mysql -h localhost -u root -p123456 www<c:\www.sql 備份一個資料庫:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql //以下是在程式中進行測試 //$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile";
Time of Update: 2018-12-08
一、從 4.0 到 4.1 的主要變化 如果在4.1.0到4.1.3版本的MySQL中建立了包含 TIMESTAMP 欄位的 InnoDB表。則在升級到4.1.4及更高時需要重建表,因為儲存格式發生變化了 字串根據標準SQL來比較:比較之前不刪除末尾的空格,以前用末尾空格擴充了比較短的字串。現在的結果是'a' > 'a\t',以前則不這樣。可以用 mysqlcheck 來檢查一下資料表 TIMESTAMP 返回 'YYYY-MM-DD HH:MM:SS' 格式的字串。在MySQL
Time of Update: 2018-12-08
新裝了windows7 64位系統後,配備布置許多東西,總是有這樣的那樣子的拂意,昨天在開始配備布置php+apache的時候,echo phpinfo()完全沒問題,但是一朝串連mysql就會呈現頁面被重設的問題。原來問題不大,但是我卻走到了誤區: 1、我懷疑64位系統的問題; 2、我感覺代碼靠不住,因為另外都能執行,輕率寫個 substr()也是能顯示出來的 ...... 這個問題糾結了我一天多,但是還是沒解決到,無奈之下 我用" php 串連 mysql 串連被重設
Time of Update: 2018-12-08
首先在建立資料庫時一定要注意產生原資料庫相同的編碼形式,如果已經產生可以用phpmyadmin等工具再整理一次,防止資料庫編碼和表的編碼不統一造成亂碼。 方法一: 通過增加參數 –default-character-set = utf8 解決亂碼問題 mysql -u root -p password < path_to_import_file –default-character-set = utf8 方法二: 在命令列匯入亂碼解決 1. use database_name; 2.
Time of Update: 2018-12-08
複製代碼 代碼如下:解壓mysql到d:\mysql,編輯my.ini [mysqld] port=3306 basedir="D:/mysql/" datadir="D:/mysql/Data/" tmpdir="d:/mysql/tmp/" default-character-set=utf8 default-storage-engine=MYISAM skip-bdb skip-innodb skip-locking key_buffer=16M
Time of Update: 2018-12-08
以下是代碼: 一、備份資料庫並下載到本地【db_backup.php】 複製代碼 代碼如下:<?php // 設定SQL檔案儲存檔案名稱 $filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql"; // 所儲存的檔案名稱 header("Content-disposition:filename=".$filename); header("Content-type:application/octetstream");
Time of Update: 2018-12-08
1.表損壞的原因分析 以下原因是導致mysql 表毀壞的常見原因: 1、 伺服器突然斷電導致資料檔案損壞。 2、 強制關機,沒有先關閉mysql 服務。 3、 mysqld 進程在寫表時被殺掉。 4、 使用myisamchk 的同時,mysqld 也在動作表。 5、 磁碟故障。 6、 伺服器死機。 7、 mysql 本身的bug 。 2.表損壞的癥狀 一個損壞的表的典型癥狀如下: 1 、當在從表中選擇資料之時,你得到如下錯誤: Incorrect key file for table: '...
Time of Update: 2018-12-08
於斷電或非順利關機而導致MySQL(和PHP搭配之最佳組合)資料庫出現錯誤是非常常見的問題。有兩種方法,一種方法使用MySQL(和PHP搭配之最佳組合)的check table和repair table 的sql語句,另一種方法是使用MySQL(和PHP搭配之最佳組合)提供的多個myisamchk, isamchk資料檢測恢複工具。前者使用起來比較簡便。推薦使用。 1. check table 和 repair table 登陸MySQL(和PHP搭配之最佳組合) 終端:
Time of Update: 2018-12-08
減少此類問題發生的辦法就是盡量減少伺服器無故斷電,關閉伺服器時,最後先手動關閉mysql資料庫。 下面看看這個問題: Can't open file: ‘×××.MYI' (errno: 145),這個錯誤一般就是你的資料庫表檔案損壞造成的,造成的原因大概是你把資料庫檔案挪來挪去的結果,當然不排除其他原因啊。 具體資料庫出現錯誤的提示代碼是: Invalid SQL: …… MySQL 錯誤!: 1016 (Can't open file: ‘×××.MYI' (errno: 145))
Time of Update: 2018-12-08
mysql全文檢索搜尋,sql的寫法: MATCH (col1,col2,…) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION]) 比如: SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database'); MATCH()函數對於一個字串執行資料庫內的自然語言搜尋。一個資料庫就是1套1個或2個包含在FULLTEXT內的列。搜尋字串作為對
Time of Update: 2018-12-08
這就意味著資料庫和表名在 Windows 中是大小寫不敏感的,而在大多數類型的 Unix 系統中是大小寫敏感的。一個特例是 Mac OS X,當預設的 HFS+ 檔案系統使用時。然而 Mac OS X 還支援 UFS 卷,那些在 Mac OS X 是大小寫敏感的就如他們在任一 Unix 上一樣。查看章節 1.8.3 MySQL 對 ANSI SQL92 的擴充。 注意:儘管在 Windows
Time of Update: 2018-12-08
本文將為你介紹這些不為人知的特性。以XML格式查看查詢結果通過使用傳統—xml 選項調用MySQL命令列客戶程式,你可以以XML格式(而不是傳統的列表形式)來查看MySQL查詢結果。如果你打算將查詢輸出與其它程式整合在一起,這一技巧非常有用,這裡是一個例子:表Ashell> mysql --xmlmysql> SELECT * FROM test.stories;1This is a test2005-07-28 00:14:572This is the second test200
Time of Update: 2018-12-08
複製代碼 代碼如下:REPAIR TABLE `table_name` 修複表 OPTIMIZE TABLE `table_name` 最佳化表 REPAIR TABLE 用於修複被破壞的表。 OPTIMIZE TABLE 用於回收閑置的資料庫空間,當表上的資料行被刪除時,所佔據的磁碟空間並沒有立即被回收,使用了OPTIMIZE TABLE命令後這些空間將被回收,並且對磁碟上的資料行進行重排(注意:是磁碟上,而非資料庫)。 多數時間並不需要運行OPTIMIZE
Time of Update: 2018-12-08
問題的背景:在實際使用MySQL時,如果訪問量比較大,那麼很可能會出現大量Locked狀態的進程,但是卻不能方便的識別是哪條SQL引起的問題,很多人遇到此類問題時,多半是通過PhpMyAdmin查詢可疑SQL,然後KILL掉,但問題是可疑SQL可能會很多,這樣逐一嘗試太過笨拙,有的人一怒之下很可能會重啟MySQL,但如此治標不治本的方法肯定更不可取。 開始實驗,在test資料庫先建立一個測試表foo(注意:是MyISAM表類型),添加若干資料: 複製代碼 代碼如下:CREATE TABLE
Time of Update: 2018-12-08
朋友主機(Windows 2003 + IIS + PHP + MYSQL )近來 MySQL 服務進程 (mysqld-nt.exe) CPU 佔用率總為 100% 高居不下。此主機有10個左右的 database, 分別給十個網站調用。據朋友測試,導致 mysqld-nt.exe cpu 佔用奇高的是網站A,一旦在 IIS 中將此網站停止服務,CPU 佔用就降下來了。一啟用,則馬上上升。 MYSQL CPU 佔用 100% 的解決過程 今天早上仔細檢查了一下。目前此網站的七日平均日 IP
Time of Update: 2018-12-08
在外部程式訪問資料庫時(例如 PHP),要組織很多 SQL 陳述式。 特別是商務邏輯複雜的時候,一大堆的 SQL 和條件夾雜在 PHP 代碼中,讓人不寒而慄。現在有了 MySQL 預存程序,商務邏輯可以封裝預存程序中,這樣不僅容易維護,而且執行效率也高。 一、MySQL 建立預存程序 "pr_add" 是個簡單的 MySQL 預存程序,這個MySQL 預存程序有兩個 int 類型的輸入參數 "a"、"b",返回這兩個參數的和。 複製代碼 代碼如下:drop procedure if
Time of Update: 2018-12-08
正好今天朋友 xjb 也碰到了這個問題,所以寫了這篇筆記,將此問題的描述以及解決記錄下。 問題描述:用 web 方式, 可以連結 mysql, 但是在命令列下, 卻提示: Fatal Error: undefined function mysql_connect() 環境: Windows 2003, PHP 5.2.0, MYSQL 5.0, Apache 2.0 在 php.ini 中, 已經將 php_mysql.dll 的模組選項給開啟了;測試的指令碼也很簡單,就一個