MySql noinstall-5.1.xx-win32 配置(原创)
1、解压mysql-noinstall-5.1.xx-win32.zip 到你喜欢的目录,例如:d:\php\mysql
2、在根目录d:\php\mysql中有五个配置信息文件:
my-small.ini (内存 <= 64M)
my-medium.ini (内存 128M )
my-large.ini (内存 512M)
my-huge.ini (内存 1G-2G)
my-innodb-heavy-4G.ini (内存 4GB)
1、解压mysql-noinstall-5.1.xx-win32.zip 到你喜欢的目录,例如:d:\php\mysql
2、在根目录d:\php\mysql中有五个配置信息文件:
my-small.ini (内存 <= 64M)
my-medium.ini (内存 128M )
my-large.ini (内存 512M)
my-huge.ini (内存 1G-2G)
my-innodb-heavy-4G.ini (内存 4GB)
InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 oracle 类型一致的不加锁读取(non-locking read in Selects)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。
要想正常的使用InnoDB带给我们的好处,首先要建立InnoDB数据库。示例采用的mysql版本是4.0.12,这个版本属于mysql的beta版本。假设你的mysql已经安装完毕,并且采用的是win xp操作系统,接下来我们就要创建InnoDB数据库。
当创建一个 InnoDB 数据库时最好以命令行方式来运行 MySQL 服务 mysqld ,而不是从 safe_mysqld 或 Windows 服务。当从命令行方式运行服务时可以看到建立过程。
步骤1:通过 MS-DOS的 NET STOP MySQL 命令停止mysql服务。
步骤2:修改c:/windows/my.ini文件,主要是设置Innodb的参数。从设置最小的角度考虑,可以
设置一下几项:
innodb_data_home_dir /*innodb数据库数据文件目录*/
innodb_data_file_path /*数据文件名称及大小*/
innodb_buffer_pool_size /*缓冲池的大小,一般设置为主存的50%-80%*/
要想正常的使用InnoDB带给我们的好处,首先要建立InnoDB数据库。示例采用的mysql版本是4.0.12,这个版本属于mysql的beta版本。假设你的mysql已经安装完毕,并且采用的是win xp操作系统,接下来我们就要创建InnoDB数据库。
当创建一个 InnoDB 数据库时最好以命令行方式来运行 MySQL 服务 mysqld ,而不是从 safe_mysqld 或 Windows 服务。当从命令行方式运行服务时可以看到建立过程。
步骤1:通过 MS-DOS的 NET STOP MySQL 命令停止mysql服务。
步骤2:修改c:/windows/my.ini文件,主要是设置Innodb的参数。从设置最小的角度考虑,可以
设置一下几项:
innodb_data_home_dir /*innodb数据库数据文件目录*/
innodb_data_file_path /*数据文件名称及大小*/
innodb_buffer_pool_size /*缓冲池的大小,一般设置为主存的50%-80%*/
事碰到麻烦,寻求帮忙,问题是这样的:
有个InnoDB表,想要用 LOAD DATA INFILE 的方式倒数据进去,发现报错:table is full。
我看了一下,日志中没有相关可用信息,该表使用的是共享表空间,总共6个ibdata*文件,只有2个文件的修改时间是最新的,觉得可能不是因为表空间慢的缘故,于是尝试插入少量数据试试看先。分多次插入10,20,100条记录都没问题,一次性插入500多条记录时,就又报table is full了。看来,事务没有问题,再把焦点转会表空间问题上来。尝试性的关闭mysqld,新加一个表空间文件,启动,再插入更多数据,发现这次没问题了,搞定。
小结:InnoDB的共享表空间文件写入并不是预想的那样,按照顺序写入,先写 ibdata1,再写 ibdata2这样的,而是采用自己的机制。一开始没确定是表空间的问题,是因为发现最后一个表空间文件并没有被更新,认为表空间还有空闲,产生了这个惯性思维误区,呵呵。
有个InnoDB表,想要用 LOAD DATA INFILE 的方式倒数据进去,发现报错:table is full。
我看了一下,日志中没有相关可用信息,该表使用的是共享表空间,总共6个ibdata*文件,只有2个文件的修改时间是最新的,觉得可能不是因为表空间慢的缘故,于是尝试插入少量数据试试看先。分多次插入10,20,100条记录都没问题,一次性插入500多条记录时,就又报table is full了。看来,事务没有问题,再把焦点转会表空间问题上来。尝试性的关闭mysqld,新加一个表空间文件,启动,再插入更多数据,发现这次没问题了,搞定。
小结:InnoDB的共享表空间文件写入并不是预想的那样,按照顺序写入,先写 ibdata1,再写 ibdata2这样的,而是采用自己的机制。一开始没确定是表空间的问题,是因为发现最后一个表空间文件并没有被更新,认为表空间还有空闲,产生了这个惯性思维误区,呵呵。