前言:《mysql配置》,在centOS上安装完成mysql后,自然是要对mysql进行配置,对于mysql来说,my.cnf可是很重要的,相当于画龙点睛的作用呢。
经常不经意间就发现文章被扣到各式各样的网站上面,甚是可恶!
那么人生何处不爬虫,爬虫请标http://blog.csdn.net/qing_gee
见贤思齐焉,见不贤而内自省也!
特此说明,我这个配置文件内容是结合我项目实战经验多次总结出来的王道,对提升mysql性能有着关键性的作用,当然了,这要看你的项目是否需要这样做喽。
这个文件里面的配置项目很多,我就一一说明了(主要是俺其实有一些也不懂,千万要笑啊,我是真不懂,不过我有问过度娘!),
<code class="language-shell hljs makefile">[client] #no-beep port=3306 [mysql] default-character-set=utf8 socket = /var/lib/mysql/mysql.sock [mysqld] # The TCP/IP Port the MySQL Server will listen on port=3306 socket = /var/lib/mysql/mysql.sock character-set-server=utf8 #默认引擎设置为INNODB,这要看你的数据库是做什么用的 default-storage-engine=INNODB #最大连接数,这个说实话,我没有测出来最合理的数值 max_connections = 500 #下面这两个参数就是禁用缓存查询,主要是因为我的数据库大量的写操作,所以设置了cache,反而会影响性能,也是基于理论上的,所以你大可不必相信。 query_cache_size=0 query_cache_type=0 #这几个数值,你千万要找度娘理论一下啊,我是说不清楚了 table_open_cache=2000 tmp_table_size=19M thread_cache_size = 18 myisam_max_sort_file_size = 1G myisam_sort_buffer_size=30M key_buffer_size=8M read_buffer_size = 512K read_rnd_buffer_size = 1M sort_buffer_size = 512k #这个很重要了,对性能有着很大的影响,我会告诉你的。 innodb_flush_log_at_trx_commit=2 innodb_log_buffer_size=1M # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. innodb_buffer_pool_size=2G innodb_buffer_pool_instances=1 #上面这两个参数对性能的作用我会论证给你的。 #这一块参数的作用我也忘的差不多了,所以度娘吧 innodb_log_file_size=48M innodb_thread_concurrency=9 innodb_autoextend_increment=64 innodb_buffer_pool_instances=8 innodb_concurrency_tickets=5000 innodb_old_blocks_time=1000 innodb_open_files=300 innodb_stats_on_metadata=0 innodb_file_per_table=1 innodb_checksum_algorithm=0 flush_time=0 join_buffer_size=256K max_connect_errors=100 max_allowed_packet = 16M open_files_limit=4161 table_definition_cache=1400 binlog_row_event_max_size=8K #二进制的类型,这个有很大学问,稍候我也会告诉你的。 binlog-format = MIXED #事务锁时间,这个同样学问很大。 innodb_lock_wait_timeout = 20 #事务锁级别,这个学问同样很大很大啊 transaction-isolation = REPEATABLE-READ binlog_cache_size = 1M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. #这个参数就是设置二进制文件的路径的,注意啊,注意啊! log_bin=mysql-bin server_id = 1 [mysqldump] max_allowed_packet = 16M </code>
重点来了,下面这些内容,如果你没有看到,我觉得你错过了精彩,精彩啊,如果你错过了,我强烈抗议的,虽然抗议无效!
1.innodb_flush_log_at_trx_commit=2
Controls the balance between strict ACID compliance for commit operations, and higher performance<br> that is possible when commit-related I/O operations are rearranged and done in batches. You can<br> achieve better performance by changing the default value, but then you can lose up to a second of<br> transactions in a crash.<br> ? The default value of 1 is required for full ACID compliance. With this value, the contents of the InnoDB<br> log buffer are written out to the log file at each transaction commit and the log file is flushed to disk.<br> ? With a value of 0, the contents of the InnoDB log buffer are written to the log file approximately once<br> per second and the log file is flushed to disk. No writes from the log buffer to the log file are performed<br> at transaction commit. Once-per-second flushing is not 100% guaranteed to happen every second,<br> due to process scheduling issues. Because the flush to disk operation only occurs approximately once<br> per second, you can lose up to a second of transactions with any mysqld process crash.<br> ? With a value of 2, the contents of the InnoDB log buffer are written to the log file after each transaction<br> commit and the log file is flushed to disk approximately once per second. Once-per-second flushing<br> is not 100% guaranteed to happen every second, due to process scheduling issues. Because the<br> flush to disk operation only occurs approximately once per second.
大致的意思是将该属性主要是为数据库的ACID原则进行服务的,并且默认为1,但是实际情况下(我们项目是结合spring和mybatis,可能是某一方面设置不当),设置为2会提高很多的事务性能,从文档中可以看得出来,“1的时候,innodb的缓存会在事务提交或者每秒钟时都会进行磁盘的刷新操作,2的时候,innodb缓存会在提交事务时写入到事务日志但不会刷新磁盘,然后在每秒钟时进行磁盘刷新操作”,2要比1提高很多性能,但是对于隐患来说,我没有太好的理解,按照文档中给出的结果好像是“在操作系统崩溃的时候,2的情况下,会丢失1秒的数据”,但是仔细想想发生的时间节点,1.事务没有commit时,断电了,此时肯定数据是没有更新成功的,因为都还没有来得及写入事务日志,2.事务提交后,在写入事务日志的时候,发生断电,此时无论是参数的值是1还是2,都应该恢复不了数据了,3.每秒钟刷新磁盘时,发生断电,按照《高性能mysql》的字面意思,此时既然事务日志已经持久化了,那么重启后,数据是会自动恢复的。那么疑问来了,2和1的隐患到底在什么情况下会发生。
我在http://blog.csdn.net/qing_gee/article/details/42551179,这篇文章中有介绍。
2.innodb_buffer_pool_size=2G<br>
innodb_buffer_pool_instances=1
这两个参数,你必须得看看这个mysql:提升性能的最关键参数
3.binlog-format = MIXED
binlog_format=mixed:二进制日志的格式为mixed,该中模式是statement和row模式的结合体,注意查看我同事写的http://www.xx566.com/detail/177.html这篇文章,里面讲解了我们项目在二进制日志设置上遇到的问题和解决办法,如果遇到类似的问题后,会有所帮助。<br> In MySQL 5.7, the default format is STATEMENT.<br> You must have the SUPER privilege to set either the global or session binlog_format value.<br> The rules governing when changes to this variable take effect and how long the effect lasts are the same<br> as for other MySQL server system variables. See Section 13.7.4, “SET Syntax”, for more information.<br> When MIXED is specified, statement-based replication is used, except for cases where only row-based<br> replication is guaranteed to lead to proper results. For example, this happens when statements contain<br> user-defined functions (UDF) or the UUID() function. An exception to this rule is that MIXED always<br> uses statement-based replication for stored functions and triggers.
4.innodb_lock_wait_timeout = 20<br>
你可以看看这个Transactional和mysql究竟有什么关系,你会明白的,我相信!
5.transaction-isolation = REPEATABLE-READ<br>
高性能mysql札记:事务,这里面,我有大量的论证。
当然了,我之前也从各地摘录了一些关于参数介绍的,如果你觉得需要的话,我会给你地址的。mysql:配置参数优化建议
写到这,我觉得我的套路就要结束了,这些经验,我真想不说出来的!
最后啊,记得要重启mysql的不然,肯定是没有效果的。
<code class="language-shell hljs makefile"><code class="language-shell hljs ">service mysql restart</code></code>
<code class="language-shell hljs "><strong>结语</strong>:分享知识是快乐的,我只好这样安慰自己吧,哈哈,其实我心态是很宽的,所谓“人逢知己千杯少”,我主要是想结交朋友的,哈哈。

MySQL適合初學者學習數據庫技能。 1.安裝MySQL服務器和客戶端工具。 2.理解基本SQL查詢,如SELECT。 3.掌握數據操作:創建表、插入、更新、刪除數據。 4.學習高級技巧:子查詢和窗口函數。 5.調試和優化:檢查語法、使用索引、避免SELECT*,並使用LIMIT。

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。