重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
储存时间,常用的有三个选择datetime、timestamp、int。昨夜同事问到了,于是今天就总结一下自己的理解。插入效率:datetime timestamp int读取效率:int timestamp datetime储存空间:datetime timestamp = int具体上面的实验数据可以看这篇文章。
创新互联是一家专注于网站设计、成都做网站与策划设计,大名网站建设哪家好?创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:大名等地区。大名做网站价格咨询:13518219792
实这个问题要拆分成两个问题。
第一是操作系统所采用的文件系统能支持的单个文件大小,比如:
linux 2.2-intel 32-bit (ext2文件系统) 最大支持2GB
linux 2.4+ (ext3文件系统) 支持4TB
win32 (fat32文件系统) 4GB
win32 (ntfs文件系统) 2TB
第二是存储引擎本身能支持的最大空间大小。比如
InnoDB存储引擎的表空间最大容量为64TB,不具体限制单表的大小,但受限于表空间。
MyISAM
最大表尺寸为65536TB,但是在 MySQL5.0版本之前,默认情况下,MyISAM单个表允许的最大尺寸为4GB,你可以通过 SHOW
TABLE STATUS 语句或 myisamchk -dv tbl_name 检查表的最大尺寸,如果是4G,可以通过修改
AVG_ROW_LENGTH 和 MAX_ROWS 选项的值来达到目的。MySQL5.0版本后,默认MyISAM表的限制是256TB。
要按你的数据库字段了……MYSQL数据库时间字段可以设大概三种类型varchar(或char)——将时间以字符串的形式保存,这是最傻的一种办法,但是如果不考虑转换格式和执行效率什么的倒是可以凑合下datetime(或date)——MYSQL数据库的时间格式,其实也是一种字符串格式,但是他有自己的格式标准,不合符的不能插入和修改int(tinyint)——以时间戳格式保存时间,再使用的时候再去程序里做转换,这是执行效率最高的办法
我以前做过一个mysql的项目,需要设计一个快速上载的机制。最后的解决办法是利用了mysql的预处理语句的特性实现的。mysql的预处理语句支持多行数据的预处理,即 insert into (columnName,columnName,...) values(?,?,...)(?,?,..)...。这样你在绑定输入参数的时候可以在程序里将整张表的数据都绑定好然后调用一次执行就能将整张表的数据插入,比用mysql_query一行一行插入省的几倍的时间。不过你一次发到mysql服务器端的数据多的情况下,要设置my.ini文件下的一个配置项,把服务器允许一次发送的数据包的大小调大就行。