我有一个Mysql的数据库,每天大概增加1000W条数据,持续至少一年,有如下问题:

作者&投稿:丁咸 (若有异议请与网页底部的电邮联系)
MySQL数据库导入问题,同样一段指令,有一台电脑能够顺利运行,另外一条就会报错,求解答。代码如下:~

TIMESTAMP 不要指定长度 以下是正确的:CREATE TABLE `act_evt_log` ( `LOG_NR_` BIGINT(20) NOT NULL AUTO_INCREMENT, `TYPE_` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, `PROC_DEF_ID_` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, `PROC_INST_ID_` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, `EXECUTION_ID_` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, `TASK_ID_` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, `TIME_STAMP_` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `USER_ID_` VARCHAR(255) COLLATE utf8_bin DEFAULT NULL, `DATA_` LONGBLOB, `LOCK_OWNER_` VARCHAR(255) COLLATE utf8_bin DEFAULT NULL, `LOCK_TIME_` TIMESTAMP(3) NULL DEFAULT NULL, `IS_PROCESSED_` TINYINT(4) DEFAULT '0', PRIMARY KEY (`LOG_NR_`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

1、原因:可能是/usr/local/mysql/mysql.pid文件没有写的权限;
解决方法 :给予权限,执行 “chmod 775 /usr/local/mysql/ -R” 然后重新启动mysqld。
2、原因:可能进程里已经存在mysql进程;
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld。
3、原因:可能是第二次在机器上安装mysql,有残余数据影响了服务的启动;
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。
4、原因:mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir);
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data。
5、原因:skip-federated字段问题;
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
6、原因:错误日志目录不存在;
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限。
7、原因:如果是centos系统,默认会开启selinux;
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。
8、原因:log-bin路径错误;
解决方法:查看对应数据库下的error log,例如我的数据库为,/usr/local/mysql/var目录,其下的localhost.localdomain.err为错误日志,只要把其下的ib_logfile*删除即可,重启mysql即可。
一、Linux下MySQL的启动与停止
1、Mysql启动、停止、重启常用命令
a、启动方式
(1)使用 service 启动:
[root@localhost /]# service mysqld start (5.0版本是mysqld)
[root@szxdb etc]# service mysql start (5.5.7版本是mysql)
(2)使用 mysqld 脚本启动:
/etc/inint.d/mysqld start
(3)使用 safe_mysqld 启动:
safe_mysqld&
b、停止方式
(1)使用 service 启动:service mysqld stop
(2)使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
(3)mysqladmin shutdown
c、重启方式
(1)使用 service 启动:
service mysqld restart
service mysql restart (5.5.7版本命令)
(2)使用 mysqld 脚本启动:
/etc/init.d/mysqld restart

首先这么大的数据量不建议使用MySQL这种免费版的数据库系统,可以使用Oracle等这种大型数据库系统,其对于数据库中数据的管理、查询等的效率要比MySQL好非常的多。
如果你一定要使用MySQL,其服务器操作系统最好使用Linux,也可以使用国产的红旗Linux。
如果数据库非常的海量,那么可以考虑使用刀片式服务器进行数据库集群模式,采用分布式的数据库系统,如此可以提高查询的效率。
既然你是搞研究的,那么对于这种巨量的数据库管理系统的数据分析可以采用SAS数据仓库来进行对数据进行分析。

每天1000W数据 几天mysql就完了 还想查询
这种优化属于系统性优化了 不是单纯数据库的问题
------------------------

下面给一下存储方面的建议 以优化性能
1、选取最适用的字段属性--将表中字段的宽度设得尽可能小。 在可能的情况下,应该尽量把字段设置为NOTNULL,这样在将来执行查询的时候,数据库不用去比较NULL值。
对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、建立索引
4、常用关联表使用视图
注意:mysql删除大量数据时 有索引的表删除非常缓慢
------------------------
mysql对系统没啥具体要求
当然最好是windows的服务器
视图好 方便安装工具进行查询和错误排除

1000万条记录,估计大于300M。
存储引擎效率当然选myisam。可以采用主从服务器(前提是业务需求实时性不高),主服务器用来增删改,从服务器用来查询。

也应该用分表技术。
对于常用的表,要每天进行更新视图,将访问高的记录通过视图查询。

操作系统用的多的是CentOS。

有一个mysql的数据表,我要随机抽取10条记录,用什么方法最好。_百度知...
答:1.通过MYSQL内置的函数来操作,具体SQL代码如下:SELECT * FROM tablename ORDER BY RAND() LIMIT 10 2.不要将大量的工作给数据库去做,这样会导致数据库在某一集中并发时间内锁死并阻塞。建议通过PHP随机生成一下1-X...

mysql是一个什么类型的数据库
答:MySQL是一个关系型数据库,它可以用来存储和管理数据。它是一个开源数据库,可以轻松地安装和使用,并具有可靠性、灵活性和扩展性。MySQL支持多种数据库编程语言,可以满足不同类型的应用程序需求。MySQL也可以用于存储大量数据...

我的MySql数据库太大(几百M),当时直接备份的成一个文件了。。没发导 ...
答:最常见的mysqldump使用可能制作整个数据库的一个备份:mysqldump --opt database > backup-file.sql 但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:mysqldump --opt database | mysql --host=remote...

怎么链接一个服务器上的mysql数据库
答:要连接一个服务器上的mysql数据库首先需要知道这个服务器的ip地址、mysql数据库的用户名和密码还有端口号(默认是3306)。然后通过Navicat Premium这个软件来完成,具体步骤如下:步骤1:电脑上安装Navicat Premium(可以百度搜索...

我的一个网站,mysql数据库里的,加入日期和最后登录日期,是一窜的数字...
答:这是一种时间的表示方式,你可以使用mysql语句:select from_unixtime(1184512264)来将它转换为标准日期格式。当然,如果你的数据库中已经有了数据,转换起来不是那么容易的,你最好新建一个(DATETIME)类型的字段,做为临时...

如何将mysql数据库一个database中的所有表合并到一个新表中
答:以MySQL数据库为例,通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表中。此方法对于SQLServer数据库,也就是T-SQL来说,同样适用 。类别一、 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部...

我有个游戏端,有MySQL数据库,有登陆器。就是没有注册账号的工具。 我听...
答:mysql数据库,连接之后,进入Player 或者叫user 或者叫Id之类储存账户的表,然后添加一个帐号,会有一个字段叫id一个字段叫user一个字段叫Password,user里面随便输入一个帐号,id字段输入一个不重复的帐号,比如前面是1,...

我在Mysql数据库中建立一个数据库,但为什么在左侧看不见刚建立的数据...
答:首先要看你建库是否成功了,成功了的话,你在左侧右键Refresh Object Browser刷新一下就能看见了,如果看不见那就是灵异现象了,如果你建库失败了的话,当然看不见了,因为不存在。

我在用mysql做一个库存的数据库!我想在入库表了添加一条数据后触发库存...
答:CREATE TRIGGER `入库表` AFTER INSERT ON `入库表`FOR EACH ROW BEGIN CALL MyFun(new.lsh);END IF;END;然后写一个存储过程 DELIMITER USE `yourdatabase`DROP PROCEDURE IF EXISTS `MyFun`CREATE DEFINER=`root`@`...

MySQL DOS我用Navicat创建了一个数据库,昨天还能select database...
答:select database():只能查看当前数据库 如果你使用ROOT登陆 没切换到指定的数据库下,select database()显示为NULL Type 'help;' or '\h' for help. Type '\c' to clear the current input sta mysql> select data...