解决mysql的内存表“table is full”错误
最后参考http://blog.sina.com.cn/s/blog_6942a1590101429h.html 来解决,摘录下核心
后来GOOGLE得知,需要重建该表才可以。
1. 设置新的参数
mysql> set global max_heap_table_size=1048576000
mysql> set global tmp_table_size=1048576000
2. 修改mysql配置文件,使得mysql重新启动时变动能够持续生效。
3. 最后,你需要重新连上MYSQL,重新创建相关的内存表。
mysql> ALTER TABLE zaojiao_sessions ENGINE MEMORY;
4. 最后,当应用重新连接到mysql数据库时,这些变更就生效了。
我自家加的:
centos下,my.cnf在/etc下,大概需要修改下那个文件,可以在mysqld重启后也能使用了。
ip地址库,根据ip查到具体的国家省市,经纬度,
采用内存表的方式,大概需要0.95秒;如果提前载入到有序列表,用内存换取时间,采用折半查找法,
列表的长度是:3767093,查到一个具体的值'207.46.250.101'的时间,分别试了两次:68纳秒,72纳米。在忙碌的windows机上是1000纳秒左右。很简单的程序,windows下消耗的内存是1.5G。
下面说说用内存表的情况:
先做设置:
set global max_heap_table_size=1048576000;
set global tmp_table_size=1048576000;
drop table ipv4_zh_mem;
CREATE TABLE `ipv4_zh_mem` (
`Start_Num` bigint(20) DEFAULT NULL,
`End_Num` bigint(20) DEFAULT NULL,
`country_name` varchar(256) COLLATE utf8_unicode_ci,
`subdivision_1_name` varchar(64) COLLATE utf8_unicode_ci,
`city_name` varchar(256) COLLATE utf8_unicode_ci,
`latitude` varchar(64),
`longitude` varchar(64)
) engine = memory;
create index memIndex on ipv4_zh_mem(Start_Num, End_Num);
insert into ipv4_zh_mem select Start_Num, End_Num, country_name, subdivision_1_name, city_name, latitude, longitude from ipv4_zh_full;
select * from ipv4_zh_mem limit 10;
select country_name, subdivision_1_name, city_name, latitude, longitude from ipv4_zh_mem where 3475962469 between Start_Num and End_Num;
最后一行执行的时间,为1.7s左右。之前没有用COLLATE utf8_unicode_ci的时候,执行的时间是0.95s。
说明: ipv4_zh_full的体积大概是600多M。系统缺省配置的内存表的限制是512M,所以必须更改限制。
编码方面的内容参考:http://blog.sina.com.cn/s/blog_6dbcbffc0100wvk3.html,为了处理中文的情况,需要修改my.cnf或者my.ini(windows下)
解决mysql的内存表“table is full”错误的更多相关文章
- mysql之内存表
一.引言 昨天下午老大让我查资料看一下mysql的内存表在主从备份中是否能被复制,我还没听说过内存表呢,于是上网查资料,记录一下,以便查阅.学习 二.进展 参考: http://www.cnblogs ...
- MySQL的内存表(转)
说明:MySQL内存表可以提升一些临时业务的查询,比如做Session的共享,一些类似缓存的数据等. “内存表”顾名思义创建在内存中的表,真是这样吗?其实不然,MySQL的内存表,表结构创建在磁盘上, ...
- 解决mysql开启GTID主从同步出现1236错误问题【转】
最近遇到mysql开启gtid做复制时,从库出现1236错误,导致同步无法进行,本文就这问题记录下处理步骤,有关gtid知识在这里不做介绍,mysql版本为5.7.16. 一.错误原因分析 错误信息如 ...
- 解决mysql开启GTID主从同步出现1236错误问题
解决mysql开启GTID主从同步出现1236错误问题 最近遇到mysql开启gtid做复制时,从库出现1236错误,导致同步无法进行,本文就这问题记录下处理步骤,有关gtid知识在这里不做介 ...
- mysql的内存表和临时表
内存表: session $ mysql -uroot root@(none) ::>use test Database changed root::>CREATE TABLE tmp_m ...
- linux设置虚拟内存(swap)解决mysql因内存不足挂掉的故障
mysql错误日志显示: InnoDB: mmap(137363456 bytes) failed; errno 122016-03-01 01:38:42 13064 [ERROR] InnoDB: ...
- 解决mySQL占用内存超大问题
为了装mysql环境测试,装上后发现启动后mysql占用了很大的虚拟内存,达8百多兆.网上搜索了一下,得到高人指点my.ini.再也没见再详细的了..只好打开my.ini逐行的啃,虽然英文差了点,不过 ...
- 解决Mysql因内存不足启动失败的问题
参考:https://www.jb51.net/article/136432.htm 一.查看内存 free -h free -m 二.解决方法: 1.增加swap交换空间解决问题: dd if=/d ...
- [mysql] 修复问题表Table '.xxxx' is marked as crashed and should be repaired
程序执行的过程中,出现 Table '.xxxx' is marked as crashed and should be repaired 错误,上网查了一下,原来是表遭到损坏所致,具体修复办法如 ...
随机推荐
- .NET Core开发日志——Model Binding
ASP.NET Core MVC中所提供的Model Binding功能简单但实用,其主要目的是将请求中包含的数据映射到action的方法参数中.这样就避免了开发者像在Web Forms时代那样需要从 ...
- VMware与Centos系统安装 和重置root密码
VMware与Centos系统安装 今日任务 1.Linux发行版的选择 2.vmware创建一个虚拟机(centos) 3.安装配置centos7 4.xshell配置连接虚拟机(centos) ...
- [No0000B0]ReSharper操作指南1/16-入门与简介
安装指南 在安装之前,您可能需要检查系统要求. ReSharper是一个VisualStudio扩展.它支持VisualStudio2010,2012,2013,2015和2017.安装完成后,您将在 ...
- [No0000121]Python教程4/9-输入和输出
输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print('hello, world') p ...
- 【视频】dx dy的意思 微分的定义 导数符号的意思
视频解说 http://www.bilibili.com/video/av8565224/
- Microsoft .NET Framework
Microsoft .NET Framework是用于Windows的新托管代码编程模型.它将强大的功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且 ...
- linux系统操作笔记
tar cvf test.tar /etc gzip test.tar bzep2 test.tar 归档压缩 tar czf test.tar.gz /etc vi /etc/test ...
- 获取文件后缀名(zip,rar等)
var filename = file.name; var index1 = filename.lastIndexOf("."); var index2 = filename.le ...
- 转: js实现全角半角检测的方法
//全角半角校验 function issbccase(strTmp) { for (var i=0; i<strTmp.length; i++) { if (strTmp.charCodeAt ...
- 要继续看Python写算法的内容请到那里去
由于在这里发文章的时候.莫名其妙的出现公布出去的问题.客服告知是由于链接或者敏感词. 能不能告诉我哪里出了问题?我能够改动,以便再发. 可是,没有人告诉我.仅仅是告诉我不能发. 另外,能不能公布一下敏 ...