扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
非root用户运行MySQL,当MySQL配置比较高时,MySQL运行中生效的参数值与配置的值不一样,所以具体分析一下MySQL是怎么调整这些参数值的。
我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、双辽ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的双辽网站制作公司
这篇文章的目的是为了说明在系统资源不够的情况下,MySQL 是怎么调整者三个参数的。说明此文涉及到三个参数open_files_limit、 max_connections、 table_open_cache。与这三个参数相关的系统资源是打开文件数限制,即文件描述符(fd)限制。系统参数与文件描述符的关系 - max_connection fd : 每一个MySQL connection 都需要一个文件描述符;
- table_open_cache fd 打开一张表至少需要一个 文件描述符,如打开MyISAM需要两个fd ;
- 系统最大打开文件数可以通过 ulimit -n查看。MySQL调整参数的方式
根据配置(三个参数的配置值或默认值)计算 request_open_files(需要的文件描述符);
2.获取有效的系统的限制值effective_open_files; 3.根据effective_open_files调整request_open_files; 4.根据调整后的request_open_files,计算实际生效的参数值(show variables 可查看参数值)。计算request_open_filesrequest_open_files有三个计算公式:1. // 最大连接数+同时打开的表的最大数量+其他(各种日志等等)2. limit_1= max_connections+table_cache_size * 2 + 10;3. 4. //假设平均每个连接打开的表的数量(2-4)5. //源码中是这么写的:6. //We are trying to allocate no less than 7. // max_connections*5 file handles8. limit_2= max_connections * 5;9. 10. //mysql 默认的默认是500011. limit_3= open_files_limit ? open_files_limit : 5000;12. 13. 所以open_files_limit期待的最低14. request_open_files= max(limit_1,limit_2,limit_3);计算effective_open_files:MySQL 的思路:
在有限值的的范围内MySQL 尽量将effective_open_files的值设大。
修正request_open_files
requested_open_files= min(effective_open_files, request_open_files)
重新计算参数值
修正open_files_limit
open_files_limit = effective_open_files
修正max_connections
max_connections 根据 request_open_files 来做修正。1. limit = requested_open_files - 10 - TABLE_OPEN_CACHE_MIN * 2;
如果配置的max_connections值大于limit,则将max_connections 的值修正为limit
其他情况下 max_connections 保留配置值
修正table_cache_size
table_cache_size 会根据 request_open_files 来做修正1. // mysql table_cache_size 最小值,4002. limit1 = TABLE_OPEN_CACHE_MIN3. // 根据 requested_open_files 计算4. limit2 = (requested_open_files - 10 - max_connections) / 25. limit = max(limit1,limt2);
如果配置的table_cache_size 值大于limit,则将 table_cache_size 的值修正为limit
其他情况下table_cache_size 保留配置值
举例
以下用例在非 root 用户下运行
参数设置:
//mysql
max_connections = 500
table_open_cache = 999
//ulimit -n
1500
生效的值:
open_files_limit = 1500 max_connections = min[(1500 - 10 - 800),500] = 500
table_open_cache = ( 1500 - 10 - 500) / 2 =495
如何修改mysql数据库的max
修改方法为: 进入mysql的安装目录,找到my.ini文件,
在最底下加上 max_allowed_packet=*M (自己视情况设置)即可。
一、密码的修改:使用mysqladmin命令
1、例如你的 root用户现在没有密码,你希望的密码修改为abc,那么命令是:mysqladmin -u root password abc
2、如果你的root现在有密码了,那么修改密码为abc的命令是:mysqladmin -u root -p password youyou
注意,命令回车后会问你旧密码,输入旧密码之后命令完成,密码修改成功。
二、密码的消除
1、以root登录:mysql -u root -p
2、mysqluse mysql;
3、mysqlupdate user set password='' where user='root';
重新启动下mysql服务就可以啦。
MySQL 8.0单个packet可以允许的最大值是1GB。
当MySQL客户端或 mysqld 服务器收到大于 max_allowed_packet 字节的数据包时 ,它将发出 ER_NET_PACKET_TOO_LARGE 错误并关闭连接。对于某些客户端,Lost connection to MySQL server during query如果通信数据包太大,也可能会出错。
客户端和服务器都有自己的 max_allowed_packet 变量,因此,如果要处理大数据包,则必须在客户端和服务器中都增加此变量。
如果使用的是 mysql 客户端程序,则其默认 max_allowed_packet 变量为16MB。要设置更大的值,请 像这样启动 mysql :
这会将数据包大小设置为32MB。
服务器的默认 max_allowed_packet 值为64MB。如果服务器需要处理大型查询(例如,如果您使用大型 BLOB 列),则可以增加此值 。例如,要将变量设置为128MB,请按以下方式启动服务器:
您还可以使用选项文件进行设置 max_allowed_packet 。例如,要将服务器的大小设置为128MB,请在选项文件中添加以下几行:
可以安全地增加此变量的值,因为仅在需要时才分配额外的内存。例如, mysqld 仅在发出长查询或 mysqld 必须返回大结果行时才分配更多内存。变量的较小默认值是一种预防措施,可用于捕获客户端和服务器之间的错误数据包,并确保不会因意外使用大数据包而导致内存不足。
也可以在Navicat mysql中修改 工具——服务器监控——MySQL——变量
MySQL的四种 BLOB 类型: (单位:字节)
TinyBlob : 最大 255
Blob : 最大 65K
MediumBlob : 最大 16M
LongBlob : 最大 4G
翻译自官网:
mysql的内存表的大小在my.cnf文件中有定义,需要通过修改配置来修改临时表的大小限制:
[mysqld]
##内存表容量
max_heap_table_size=1024M
##临时表容量
tmp_table_size=1024M
在mysql配置文件的mysqld节点下,max_heap_table_size指定的是内存表的最大内存,而tmp_table_size指定的是临时表的最大大小。
以上是如何修改mysql临时表内存表的大小限制的内容,更多 临时 大小 内存 限制 修改 如何 MySQL 的内容,请您使用右上方搜索功能获取相关信息。
1、查看最大连接数的代码:
show variables like '%max_connections%';
2、修改最大连接数的代码:
set GLOBAL max_connections = 200;
在命令行中查看和修改 MySQL 的最大连接数,具体代码如下:
mysql -uuser -ppassword(命令行登录MySQL)
mysqlshow variables like 'max_connections';(查可以看当前的最大连接数)
msyqlset global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功)
mysqlexit
扩展资料
MySQL的系统特性:
1、使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
2、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
3、为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
4、支持多线程,充分利用 CPU 资源。
5、优化的 SQL查询算法,有效地提高查询速度。
6、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7、提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
8、提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
9、提供用于管理、检查、优化数据库操作的管理工具。
10、支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
11、支持多种存储引擎。
12、MySQL 是开源的,所以你不需要支付额外的费用。
13、MySQL 使用标准的 SQL数据语言形式。
14、MySQL 对 PHP 有很好的支持,PHP是比较流行的 Web 开发语言。
15、MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。
参考资料:百度百科-mySQL
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流