文章归档

MySQL数据库更新教程

一、修改BigDump文件下列变量 $db_server = ‘localhost’; $db_name = ‘tkzc’; $db_username = ‘root’; $db_password = ”;

bigdump.SQL大文件上传

常用的 MySQL 数据库恢复工具(也能进行备份操作)是 phpMyAdmin,这是一个开源、免费的工具,大多数主机商(例如 Hawkhost)都会免费提供。相信很多站长也用过 phpMyAdmin 来进行网站数据库的备份和恢复,确实很方便,并且有多国语言界面。不过,有一种情况可能你还没碰到,就是当你的数据库体积比较大时,例如 SQL 备份文件大于 2MB,甚至大于 10MB,这个时候如果你通过 phpMyAdmin 来进行数据库的恢复,就会出错,这是因为你的 SQL 文件体积太大,超过了 phpMyAdmin 的处理能力,这种情况在网络速度比较慢的情况下尤为突出,例如站长在周末晚上8点这个网络拥挤的时段尝试使用 phpMyAdmin 来恢复大型 MySQL 数据库备份,就容易遇到这种问题。 很显然 phpMyAdmin 只适用于恢复比较小的 SQL 文件备份。对于超大 MySQL 数据库备份的恢复,你必须换一个专用的恢复工具,那就是:BigDump!

mysql笔记–变更数据表结构

1,重新命名数据表 alter table A rename to B  //数据表A改名为B rename table A to B                //数据表A改名为B rename A toC,B to A,C to A    //数据表A和数据表B互换名字 alter table S.A rename to T.A                //数据库S里面的表A移动到数据库B里面 rename table S.A to T.A   //数据库S里面的表A移动到数据库B里面 2,改变数据列的类型 我们现在要把数据表A里面的一个smallint unsigned类型的数据列I再次改动为 mediumint unsigned 类型 alter table A motify I mediumint unsigned alter table A change I I mediumint unsigned 注意change子句的特点:不仅能够改变数据列的类型,还能改变数据列的名字。这是modify子句所不能完成的。下面就把这个数据列改名了。 alter table A change I J mediumint unsigned 3,将数据表由可变长度数据行转变成固定长度数据行 有的时候为了提高性能,需要做这样的转变,但有一点需要注意:必须用同一条alter命令来一次改变所有的数据列,不能仅仅改变一个数据列!举例如下: create table A(name varchar(40),address varchar(80)) 我们开始修改命令就应该是: alter table A modify name char(40),modify address char(80); 4,将数据表由固定长度数据行转变成可变长度数据行 如果觉得空间利用率不高,那就需要再转变回来,这个就很简单了,没有特别要求 alter table A modify name varchar(40) 5,转换数据表类型 我们知道,MySQL数据库存在多种数据表类型,但每一种类型的特性并不相同。 如果你想让你的数据表支持事务处理机制。那就必须把它搞成BDB或innoBDB格式 alter table A type= BDB alter table A type= InnoBDB

MySQL字段类型详解

MySQL字段类型详解 核心提示:MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。 MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。 概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。由MySQL支持的列类型列在下面。下列代码字母用于描述中:M指出最大的显示尺寸。最大的合法的显示尺寸是 255 。D适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。方括号(“[”和“]”)指出可选的类型修饰符的部分。注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。 TINYINT[(M)] [UNSIGNED] [ZEROFILL] 一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。 SMALLINT[(M)] [UNSIGNED] [ZEROFILL] 一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。 MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] 一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。 INT[(M)] [UNSIGNED] [ZEROFILL] 一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。 INTEGER[(M)] [UNSIGNED] [ZEROFILL] 这是INT的一个同义词。 BIGINT[(M)] [UNSIGNED] [ZEROFILL] 一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到 18446744073709551615。注意,所有算术运算用有符号的BIGINT或DOUBLE值完成,因此你不应该使用大于922337203685477580 …

>>Read more

多维数据查询效率分析

多维数据查询效率分析 前面分析了在PostgreSQL和MySQL中进行多维数据查询的挑战。问题的根本在于,按行存储的数据库在行变得很大(wide table)的情况下,一旦索引无法完成所有的查询工作,就会受到行大小的影响。为了避免按行存储的缺陷,按列存储的数据库就被发明了出来。按行存储的数据库有很多,绝大部分都是要花钱的,开源的有MonetDB。和前面相同的数据量,相同的wide table的表设计,用MonetDB可以快上很多: sql>select count(contact_id) from spike2 where a1 = 7; +——–+ | L24 | +========+ | 830569 | +——–+ 1 tuple (24.576ms) sql>select count(contact_id) from spike2 where a1 = 7 and a2 = 5; +——–+ | L25 | +========+ | 164788 | +——–+ 1 tuple (105.352ms) sql>select count(contact_id) from spike2 where a1 = 7 and a2 = 5 and a3 = 1; +——+ | L26 | +======+ | 4040 | +——+ 1 tuple (24.963ms) 复制代码 从结果上来看,普遍是快上10倍,极端情况下要快上100倍。MonetDB之所以快,除了按行存储之外,还有一个秘诀是它会被SQL编译成小的关系代数操作。简单的关系代数操作就比如加法,这个操作就只做两个集合相加。每个“关系代数操作”都是用C甚至汇编优化的。普通的按行存储的数据库的实现其实是外层有个循环,循环体是一个解释器,解析过的SQL和行的记录是输入。而MonetDB的编译实现方式就避免了在循环里放置一个解释器。这样做的好处是有利于CPU做分支预测。因为解释器的代码相对于硬编码的“关系代数操作”来说要复杂得多,相应的分支预测失败率也高很多。 MonetDB的缺陷也是非常明显的。每个关系代数操作都要把其结果完全计算出来(Materialized),也就是要占用内存。比如你要SELECT A+B+C,那么A+B的每行的结果 …

>>Read more