mysql配置_MySQL

May 30, 2016 pm 05:10 PM

前言:《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会提高很多的事务性能,从文档中可以看得出来,&ldquo;1的时候,innodb的缓存会在事务提交或者每秒钟时都会进行磁盘的刷新操作,2的时候,innodb缓存会在提交事务时写入到事务日志但不会刷新磁盘,然后在每秒钟时进行磁盘刷新操作&rdquo;,2要比1提高很多性能,但是对于隐患来说,我没有太好的理解,按照文档中给出的结果好像是&ldquo;在操作系统崩溃的时候,2的情况下,会丢失1秒的数据&rdquo;,但是仔细想想发生的时间节点,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, &ldquo;SET Syntax&rdquo;, 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>:分享知识是快乐的,我只好这样安慰自己吧,哈哈,其实我心态是很宽的,所谓“人逢知己千杯少”,我主要是想结交朋友的,哈哈。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Docker에서 MySQL 메모리 사용을 줄입니다 Docker에서 MySQL 메모리 사용을 줄입니다 Mar 04, 2025 pm 03:52 PM

이 기사는 Docker에서 MySQL 메모리 사용을 최적화합니다. 모니터링 기술 (Docker Stats, Performance Schema, 외부 도구) 및 구성 전략에 대해 설명합니다. 여기에는 Docker 메모리 제한, 스와핑 및 CGroups와 함께 포함됩니다

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다. MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다. Mar 04, 2025 pm 04:01 PM

이 기사에서는 MySQL의 "공유 라이브러리를 열 수 없음"오류를 다룹니다. 이 문제는 MySQL이 필요한 공유 라이브러리 (.so/.dll 파일)를 찾을 수 없음에서 비롯됩니다. 솔루션은 시스템 패키지 M을 통한 라이브러리 설치 확인과 관련이 있습니다.

Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까? Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까? Mar 19, 2025 pm 03:51 PM

이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음) Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음) Mar 04, 2025 pm 03:54 PM

이 기사는 Linux에 MySQL을 직접 설치하는 것과 Phpmyadmin이없는 Podman 컨테이너 사용을 비교합니다. 각 방법에 대한 설치 단계에 대해 자세히 설명하면서 Podman의 격리, 이식성 및 재현성의 장점을 강조하지만 또한

sqlite 란 무엇입니까? 포괄적 인 개요 sqlite 란 무엇입니까? 포괄적 인 개요 Mar 04, 2025 pm 03:55 PM

이 기사는 자체 포함 된 서버리스 관계형 데이터베이스 인 SQLITE에 대한 포괄적 인 개요를 제공합니다. SQLITE의 장점 (단순성, 이식성, 사용 용이성) 및 단점 (동시성 제한, 확장 성 문제)에 대해 자세히 설명합니다. 기음

MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드 MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드 Mar 04, 2025 pm 03:49 PM

이 안내서는 Homebrew를 사용하여 MacOS에 여러 MySQL 버전을 설치하고 관리하는 것을 보여줍니다. 홈 브루를 사용하여 설치를 분리하여 갈등을 방지하는 것을 강조합니다. 이 기사에는 설치, 서비스 시작/정지 서비스 및 Best Pra에 대해 자세히 설명합니다

MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까? MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까? Mar 18, 2025 pm 12:01 PM

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)? 인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)? Mar 21, 2025 pm 06:28 PM

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

See all articles