十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、由于mysql能解析sql的压缩文件,因此将200M压缩后为5M。
创新互联服务项目包括石台网站建设、石台网站制作、石台网页制作以及石台网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,石台网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到石台省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
2、默认情况下:MySQL导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入,可修改php.ini参数调整:
在php.ini中修改相关参数:
影响MySQL导入文件大小的参数有三个:、
memory_limit=128M,upload_max_filesize=2M,post_max_size=8M
背景
在了解动态权限之前,我们先回顾下 MySQL 的权限列表。
权限列表大体分为服务级别和表级别,列级别以及大而广的角色(也是MySQL 8.0 新增)存储程序等权限。我们看到有一个特殊的 SUPER 权限,可以做好多个操作。比如 SET 变量,在从机重新指定相关主机信息以及清理二进制日志等。那这里可以看到,SUPER 有点太过强大,导致了仅仅想实现子权限变得十分困难,比如用户只能 SET 变量,其他的都不想要。那么 MySQL 8.0 之前没法实现,权限的细分不够明确,容易让非法用户钻空子。
那么 MySQL 8.0 把权限细分为静态权限和动态权限,下面我画了两张详细的区分图,图 1 为静态权限,图 2 为动态权限。
图 1- MySQL 静态权限的权限管理图
图 2-动态权限图
那我们看到其实动态权限就是对 SUPER 权限的细分。 SUPER 权限在未来将会被废弃掉。
我们来看个简单的例子,
比如, 用户 'ytt2@localhost', 有 SUPER 权限。
mysql show grants for ytt2@'localhost';+---------------------------------------------------------------------------------+| Grants for ytt2@localhost |+---------------------------------------------------------------------------------+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON *.* TO ytt2@localhost |+---------------------------------------------------------------------------------+1 row in set (0.00 sec)
但是现在我只想这个用户有 SUPER 的子集,设置变量的权限。那么单独给这个用户赋予两个能设置系统变量的动态权限,完了把 SUPER 给拿掉。
mysql grant session_variables_admin,system_variables_admin on *.* to ytt2@'localhost';Query OK, 0 rows affected (0.03 sec)mysql revoke super on *.* from ytt2@'localhost';Query OK, 0 rows affected, 1 warning (0.02 sec)
我们看到这个 WARNINGS 提示 SUPER 已经废弃了。
mysql show warnings;
+---------+------+----------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------+
| Warning | 1287 | The SUPER privilege identifier is deprecated |
+---------+------+----------------------------------------------+
1 row in set (0.00 sec)`
mysql show grants for ytt2@'localhost';
+-----------------------------------------------------------------------------------+
| Grants for ytt2@localhost |
+-----------------------------------------------------------------------------------+
| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO ytt2@localhost |
| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO ytt2@localhost |
+-----------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
当然图 2 上还有其它的动态权限,这里就不做特别说明了。
非root用户运行MySQL,当MySQL配置比较高时,MySQL运行中生效的参数值与配置的值不一样,所以具体分析一下MySQL是怎么调整这些参数值的。
这篇文章的目的是为了说明在系统资源不够的情况下,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的内存表的大小在my.cnf文件中有定义,需要通过修改配置来修改临时表的大小限制:
[mysqld]
##内存表容量
max_heap_table_size=1024M
##临时表容量
tmp_table_size=1024M
在mysql配置文件的mysqld节点下,max_heap_table_size指定的是内存表的最大内存,而tmp_table_size指定的是临时表的最大大小。
以上是如何修改mysql临时表内存表的大小限制的内容,更多 临时 大小 内存 限制 修改 如何 MySQL 的内容,请您使用右上方搜索功能获取相关信息。