mysql56編譯參數
# cd /usr/local/mysql5.5/docs
# vim INFO_BIN (其中 Pointer size: 4 一行之後的內容就是所要的參數,需要注意的是,這里的參數的書寫格式並不是在執行 cmake 命令時參數的標准格式 ,使用的時候要去掉 :BOOL或 PATH: 等字元)
===== Information about the build process: =====
Build was run at 2014-09-13 23:14:29 on host 'rhel5-8-1.breeze.com'
Build was done on linux-2.6.18-308.el5 using i686
Build was done using cmake 3.0.2
===== Compiler flags used (from the 'sql/' subdirectory): =====
# compile C with /usr/bin/cc
# compile CXX with /usr/bin/c++
C_DEFINES = -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DMYSQL_SERVER
CXX_DEFINES = -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DMYSQL_SERVER
Pointer size: 4
===== Feature flags used: =====
-- Cache values
CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql5.5
COMMUNITY_BUILD:BOOL=ON
② mysql 如何修改參數
修改參數分兩類,一類是修改數據啟動類型參數
直接進入/etc/my.cnf中可修改啟動的系統參數。
另外一種是修改運行參數,則可直接進入mysql進行修改,或者直接試用連接工具進行修改。
一、variable
#查看mysql參數
#mysql -uroot -proot -e "show variables;"|grep logbin
二、status
#查看mysql狀態
#mysql -uroot -proot -e "show status;"
#全局狀態
#mysql -uroot -proot -e "show global status;"
三、processlist
#查看100條正在執行的sql語句
mysql> show processlist;
#查看全部正在執行的sql語句
mysql> show full processlist;
四、set 參數
#不重啟直接生效,重啟後失效。若需要重啟後依然生效,需要更改配置文件my.cnf
set global key_buffer_size = 1024*1024*2
③ 大家在生產環境中編譯mysql時一般都用哪些參數
MySQL AB官方網站會把五種資料庫版本都提供下載,主要是MySQL資料庫屬於開放源代碼的資料庫產品,鼓勵全球的技術愛好者參與研發、測試、文檔編寫和經驗分享,甚至包過產品發展規劃,對於Development版本、Alpha版本和Beta版本是絕對不允許使用在任何生產環境的,肯定存在重大的問題或功能未完全實現。
絕大多數情況下RC版本也是不允許使用在生產環境,畢竟這是一個GA版本之前,也即生產版本發布之前的一個小版本。
另外,對MySQL 資料庫GA版本,也是需要慎重選擇,開源社區產品畢竟不是經過嚴格的測試工序完成的產品,是全球開源技術人員的自願完成的,會存在比商業產品穩定性弱的缺陷。
④ 如何查看mysql可用編譯參數
如何查看mysql可用編譯參數
查看nginx編譯參數:/usr/local/nginx/sbin/nginx -V查看apache編譯參數:cat /usr/local/apache2/build/config.nice查看mysql編譯參數:cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE_LINE查看php編譯參數:/usr/local/php/bin/php -i | grep configure
⑤ 如何動態修改Mysql的配置參數
登入mysql:
mysql -h localhost -u root -p
然後會讓輸入密碼
查看當前配置參數(wait_timeout為例):
show session variables like '%wait_timeout%'; (或去掉session也一樣)這是當前會話配置參數
現在我們來改這個值:
set wait_timeout=90;
然後我們一起再查看下當前配置參數:
show variables like '%wait_timeout%';
這是修改當前會話配置,當退出再新起一個會話時就會恢復原樣。
想在所有會話都有效可以設置全局配置,參數把session改為global就可以了
set global wait_timeout=90;後再查看
show global variables like '%wait_timeout%';
再退出後重新進入看看,值還是在。
⑥ mysql編譯時哪個參數可以更改mysql默認字元集
首先,MySQL的字元集問題主要是兩個概念,一個是Character Sets,一個是Collations,前者是字元內容
及編碼,後者是對前者進行比較操作的一些規則。這兩個參數集可以在資料庫實例、單個資料庫、表、列等四個級
別指定。
對於使用者來說,一般推薦使用utf8編碼來存儲數據。而要解決亂碼問題,不單單是MySQL數據的存儲問題,還
和用戶的程序文件的編碼方式、用戶程序和MySQL資料庫的連接方式都有關系。
首先,MySQL有默認的字元集,這個是安裝的時候確定的,在編譯MySQL的時候可以通過DEFAULT_CHARSET=
utf8和DEFAULT_COLLATION=utf8_general_ci這兩個參數(MySQL5.5版本,5.1版本用--with-charset=
utf8 --with-collation=utf8_general_ci)來指定默認的字元集為utf8,這也是最一勞永逸的辦法,這樣指定後,
客戶端連接到資料庫的編碼方式也默認是utf8了,應用程序不需要任何處理。
⑦ 如何在makefile中增加mysql編譯參數
用QT Creator生成的文件進行編譯時出現錯誤,網上查找說是要修改生成的Makefile文件,在CFLAGS和CXXFLAGS中添加「-fno-rtti」編譯參數。這樣每個Makefile文件都要修改,很麻煩。那麼能不能在生成Makefile時自動加上呢。可以,只需要修改qmake的配置即可!
以下為解決方法(也可供同類問題參考):
1、#sudo gedit Makefile 查看生成的Makefile。在其中找到Makefile: mycom.pro /QT4/builddir/sdk/qtopiacore/target/mkspecs/qws/linux-arm-g++/qmake.conf 。
這就是要修改的配置文件
2、#sudo gedit /QT4/builddir/sdk/qtopiacore/target/mkspecs/qws/linux-arm-g++/qmake.conf
找到要修改的項並修改QMAKE_CFLAGS = -fno-rtti -pipe,QMAKE_CXXFLAGS = $$QMAKE_CFLAGS(說明引用QMAKE_CFLAGS)
那麼這就完成修改。保存退出即可。
⑧ 編譯安裝mysql56時出現bash:cmake:command not found怎麼解決
看看cmake在沒有在默認的環境變數中,有時候安裝了多了就是這樣;
find / -name cmake 看安裝在那裡
然後設置環境變數應該就沒問題了
export PATH=$PAHT:這里就是你的安裝的位置
⑨ MySQL cmake編譯時這些參數是什麼意思
MySQL cMake 常規參數介紹
-DCMAKE_INSTALL_PREFIX= 指向mysql安裝目錄
-DINSTALL_SBINDIR=sbin 指向可執行文件目錄(prefix/sbin)
-DMYSQL_DATADIR=/var/lib/mysql 指向mysql數據文件目錄(/var/lib/mysql)
-DSYSCONFDIR=/etc/mysql 指向mysql配置文件目錄(/etc/mysql)
-DINSTALL_PLUGINDIR=lib/mysql/plugin 指向插件目錄(prefix/lib/mysql/plugin)
-DINSTALL_MANDIR=share/man 指向man文檔目錄(prefix/share/man)
-DINSTALL_SHAREDIR=share 指向aclocal/mysql.m4安裝目錄(prefix/share)
-DINSTALL_LIBDIR=lib/mysql 指向對象代碼庫目錄(prefix/lib/mysql)
-DINSTALL_INCLUDEDIR=include/mysql 指向頭文件目錄(prefix/include/mysql)
-DINSTALL_INFODIR=share/info 指向info文檔存放目錄(prefix/share/info)
prefix官方推薦設為/usr
類型csv,myisam,myisammrg,heap,innobase,archive,blackhole
若想啟用某個引擎的支持:-DWITH_<ENGINE>_STORAGE_ENGINE=1
如:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
若想禁用某個引擎的支持:-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
-DWITH_READLINE=1 啟用readline庫支持(提供可編輯的命令行)
-DWITH_SSL=system 啟用ssl庫支持(安全套接層)
-DWITH_ZLIB=system 啟用libz庫支持(zib、gzib相關)
-DWTIH_LIBWRAP=0 禁用libwrap庫(實現了通用TCP包裝的功能,為網路服務守護進程使用)
-DMYSQL_TCP_PORT=3306 指定TCP埠為3306
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 指定mysql.sock路徑
-DENABLED_LOCAL_INFILE=1 啟用本地數據導入支持
-DEXTRA_CHARSETS=all 啟用額外的字元集類型(默認為all)
-DDEFAULT_CHARSET=utf8 指定默認的字元集為utf8
-DDEFAULT_COLLATION=utf8_general_ci 設定默認排序規則(utf8_general_ci快速/utf8_unicode_ci准確)
-DWITH_EMBEDDED_SERVER=1 編譯嵌入式伺服器支持
-DMYSQL_USER=mysql 指定mysql用戶(默認為mysql)
-DWITH_DEBUG=0 禁用debug(默認為禁用)
-DENABLE_PROFILING=0 禁用Profiling分析(默認為開啟)
-DWITH_COMMENT='string' 一個關於編譯環境的描述性注釋
⑩ 小內存編譯安裝mysql要加什麼參數
MySQL內存參數配置推薦:https://tools.percona.com/wizard
1.慢查詢日誌:
slow_launch_time=2 查詢大於某個時間的值(單位:s)
slow_query_log=on/off 開啟關閉慢查詢日誌
slow_query_log_file=/opt/data/host-slow.log 慢查詢日誌位置
2.連接數:
max_connections MySQL最大連接數
back_log 當連接數滿了後,設置一個值,允許多少個連接進入等待堆棧
max_connect_errors 賬號連接到伺服器允許的錯誤次數
connect_timeout 一個連接報文的最大時間(單位:s)
skip-name-resolve 加入my.cnf即可,MySQL在收到連接請求的時候,會根據請求包
中獲得的ip來反向追查請求者的主機名。然後再根據返回
的主機名又一次去獲取ip。如果兩次獲得的ip相同,那麼連接就成功建立了。
加了次參數,即可省去這個步驟
NOTES:
查詢當前連接數:show global status like 'connections';
3.key_buffer_size 索引緩存大小,是對MyISAM表性能影響最大的一個參數
32bit平台上,此值不要超過2GB,64bit平台不用做此限制,但也不要超過4GB
根據3點計算:
a.系統索引總大小
b.系統物理內存
c.系統當前keycache命中率
粗略計算公式:
Key_Size =key_number*(key_length+4)/0.67
Max_key_buffer_size
Threads_Usage = max_connections * (sort_buffer_size + join_buffer_size +
read_buffer_size+read_rnd_buffer_size+thread_stack)
key_cache_block_size ,是key_buffer緩存塊的單位長度,以位元組為單位,默認值為1024。
key_cache_division_limit 控制著緩存塊重用演算法。默認值為100,此值為key_buffer_size中暖鏈所佔的大小百分比(其中有暖鏈和熱鏈),100意味著全是暖鏈。(類似於Oracle Data Buffer Cache中的default、keep、recycle)
key_cache_age_threshold 如果key_buffer里的熱鏈里的某個緩存塊在這個變數所設定的時間里沒有被訪問過,MySQL伺服器就會把它調整到暖鏈里去。這個參數值越大,緩存塊在熱鏈里停留的時間就越長。
這個參數默認值為 300,最小值為100。
Myisam索引默認是緩存在原始key_buffer中的,我們可以手動創建新的key_buffer,如在my.cnf中加入參數new_cache.key_buffer_size=20M。指定將table1和table2的索引緩存到new_cache的key_buffer中:
cache index table1,table2 in new_cache;
(之前默認的key_buffer為default,現在手動創建的為new_cache)
手動將table1和table2的索引載入到key_buffer中:
load index into cache table1,table2;
系統中記錄的與Key Cache相關的性能狀態參數變數: global status
◆Key_blocks_not_flushed,已經更改但還未刷新到磁碟的DirtyCacheBlock;
◆Key_blocks_unused,目前未被使用的CacheBlock數目;
◆Key_blocks_used,已經使用了的CacheBlock數目;
◆Key_read_requests,CacheBlock被請求讀取的總次數;
◆Key_reads,在CacheBlock中找不到需要讀取的Key信息後到「.MYI」文件中(磁碟)讀取的次數;
◆Key_write_requests,CacheBlock被請求修改的總次數;
◆Key_writes,在CacheBlock中找不到需要修改的Key信息後到「.MYI」文件中讀入再修改的次數;
索引命中緩存率:
key_buffer_read_hits=(1-Key_reads/Key_read_requests)*100%
key_buffer_write_hits=(1-Key_writes/Key_write_requests)*100%
該命中率就代表了MyISAM類型表的索引的cache
4.臨時表 tmp_table_size (用於排序)
show global status like 『created_tmp%』;
| Variable_name | Value |
| Created_tmp_disk_tables | 21197 | #在磁碟上創建臨時表的次數
| Created_tmp_files | 58 | #在磁碟上創建臨時文件的次數
| Created_tmp_tables | 1771587 | #使用臨時表的總次數
TmpTable的狀況主要是用於監控MySQL使用臨時表的量是否過多,
是否有臨時表過大而不得不從內存中換出到磁碟文件上。
a.如果:
Created_tmp_disk_tables/Created_tmp_tables>10%,則需調大tmp_table_size
比較理想的配置是:
Created_tmp_disk_tables/Created_tmp_tables<=25%
b.如果:
Created_tmp_tables非常大 ,則可能是系統中排序操作過多,或者是表連接方式不是很優化。
相關參數:
tmp_table_size 內存中,臨時表區域總大小
max_heap_table_size 內存中,單個臨時表的最大值,超過的部分會放到硬碟上。
5.table cache相關優化 :
參數table_open_cache,將表的文件描述符打開,cache在內存中
global status:
open_tables 當前系統中打開的文件描述符的數量
opened_tables 系統打開過的文件描述符的數量
如果:
Opened_tables數量過大,說明配置中table_open_cache值可能太小
比較合適的值為:
Open_tables / Opened_tables * 100% >= 85%
Open_tables / table_open_cache * 100% <= 95%
6.進程的使用情況
在MySQL中,為了盡可能提高客戶端請求創建連接這個過程的性能,實現了一個ThreadCache池,
將空閑的連接線程存放在其中,而不是完成請求後就銷毀。這樣,當有新的連接請求的時候,
MySQL首先會檢查ThreadCache池中是否存在空閑連接線程,如果存在則取出來直接使用,
如果沒有空閑連接線程,才創建新的連接線程。
參數:thread_cache_size
thread cache 池中存放的最大連接數
調整參考:
在短連接的資料庫應用中,資料庫連接的創建和銷毀是非常頻繁的,
如果每次都需要讓MySQL新建和銷毀相應的連接線程,那麼這個資源消耗實際上是非常大的,因此
thread_cache_size的值應該設置的相對大一些,不應該小於應用系統對資料庫的實際並發請求數。
參數:thread_stack - 每個連接線程被創建的時候,MySQL給他分配的內存大小,
類似PGA中存放數據的內存部分(不包括排序的空間)
show status like 'connections';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 80 | #接受到的來自客戶端的總連接數,包括以前和現在的連接。
+---------------+-------+
show status like 'thread%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 0 | #當前系統中,緩存的連接數
| Threads_connected | 1 | #當前系統中正連接的線程數
| Threads_created | 77 | #創建過的匯流排程數
| Threads_running | 1 |
+-------------------+-------+
a.如果:
Threads_created 值過大,說明MySQL一直在創建線程,這是比較消耗資源的,應該適當增大
thread_cache_size的值
b.如果:
Threads_cached的值比參數thread_cache_size小太多,則可以適當減小thread_cache_size的值
ThreadCache命中率:
Threads_Cache_Hit=(Connections-Threads_created)/Connections*100%
一般來說,當系統穩定運行一段時間之後,我們的ThreadCache命中率應該保持在90%
左右甚至更高的比率才算正常。
7.查詢緩存(Query Cache) -- optional
將客戶端的SQL語句(僅限select語句)通過hash計算,放在hash鏈表中,同時將該SQL的結果集
放在內存中cache。該hash鏈表中,存放了結果集的內存地址以及所涉及到的所有Table等信息。
如果與該結果集相關的任何一個表的相關信息發生變化後(包擴:數據、索引、表結構等),
就會導致結果集失效,釋放與該結果集相關的所有資源,以便後面其他SQL能夠使用。
當客戶端有select SQL進入,先計算hash值,如果有相同的,就會直接將結果集返回。
Query Cache的負面影響:
a.使用了Query Cache後,每條select SQL都要進行hash計算,然後查找結果集。對於大量SQL
訪問,會消耗過多額外的CPU。
b.如果表變更比較頻繁,則會造成結果集失效率非常高。
c.結果集中保存的是整個結果,可能存在一條記錄被多次cache的情況,這樣會造成內存資源的
過度消耗。
Query Cache的正確使用:
a.根據表的變更情況來選擇是否使用Query Cache,可使用SQL Hint:SQL_NO_CACHE和SQL_CACHE
b.對於 變更比較少 或 數據基本處於靜態 的表,使用SQL_CACHE
c.對於結果集比較大的,使用Query Cache可能造成內存不足,或擠占內存。
可使用1.SQL_NO_CACHE 2.query_cache_limit控制Query Cache的最大結果集(系統默認1M)
mysql> show variables like '%query_cache%';
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| have_query_cache | YES | #是否支持Query Cache
| query_cache_limit | 1048576 | #單個結果集的最大值,默認1M
| query_cache_min_res_unit | 4096 | #每個結果集存放的最小內存,默認4K
| query_cache_size | 0 | #Query Cache總內存大小,必須是1024的整數倍
| query_cache_type | ON | #ON,OFF,DEMAND(包含SQL_CACHE的查詢中才開啟)
| query_cache_wlock_invalidate | OFF |
+------------------------------+---------+
#query_cache_wlock_invalidate:
針對於MyISAM存儲引擎,設置當有WRITELOCK在某個Table上面的時候,
讀請求是要等待WRITE LOCK釋放資源之後再查詢還是允許直接從QueryCache中讀取結果,
默認為FALSE(可以直接從QueryCache中取得結果)
此為部分內容,附上原文出處:http://blog.itpub.net/26355921/viewspace-769393/