优化MySQL插入方法的五个妙招
以下是涉及到插入表格的查询的5种改进方法:
1)使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快20倍。
2)使用带有多个VALUES列表的INSERT语句一次插入几行这将比使用一个单行插入语句快几倍。调整bulk_insert_buffer_size变量也能提高(向包含行的表格中)插入的速度。
3)可以对myisam表并行插入Concurrent_insert系统变量可以被设置用于修改concurrent-insert处理。该变量
默认设置为1。如果concurrent_insert被设置为0,并行插入就被禁用。如果该变量被设置为2,在表的末端可以并行插入,即便该表的某些行
已经被删除。
4)使用插入延迟
如果你的客户不能或无需等待插入完成的时候,这招很有用。当你使用MySQL存储,并定期运行需要很长时间才能完成的SELECT和UPDATE语
句的时候,你会发现这种情况很常见。当客户使用插入延迟,服务器立刻返回,如果表没有被其他线程调用,则行会列队等待被插入。使用插入延迟的另一个好处就
是从多个客户插入的情况会被绑定并记录在同一个block中。这将比处理多个独立的插入要快得多。
5)插入之前将表锁定(只针对非事务处理型的表)
这将提高数据库性能,因为索引缓冲区只是在所有的插入语句完成后才对磁盘进行一次刷新。通常情况下,有多少个插入语句就会有多少次索引缓冲区刷新。如果你可以用一个插入语句实现所有行的插入,则无需使用显式锁定语句。
要想更快地对事务型表插入,你应该使用START TRANSACTION和COMMIT语句,而不是LOCK TABLES语句。
相关文档:
MySQL备份还原数据库批处理
在日常工作中,我们往往需要对MySQL数据库进行备份,有时可以通过拷贝整个文件,有时通过备份整个库还有的时候我们就只需要备份某个表。
1、备份数据库(单个表备份) bk_table.bat
mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=gbk -t database1 table1>tabl ......
一、数据库连接
命令:mysql -u用户名 -p密码
mysql -h服务器 -u用户名 -p密码
mysql -h服务器 -P端口 -u用户名 -p密码 -D数据库名
说明:连接到MySQL数据库服务器,如果指定了“-D数据库”参数,会将指定的数据库设为活动数据库。
例子:mysql -hlocalhost -P3306 -uroot -p123456 -Dtest ......
mysql中不区分大小写:
Linux中MySQL的配置文件中(/etc/my.cnf),是没有lower_case_table_names=1这行的。
在Windows安装的MySQL的配置文件中(my.ini),是有lower_case_table_names=1这行的。
lower_case_table_names=1的用途是让MySQL实现不区分大小写
mysql中允许其他机器访问:
mysql> use mysql;
这句话的意思 ......
复制记录,采用自查询方式
sql
INSERT INTO `table` ('id','aa','bb','cc') SELECT 'id','aa','bb','cc' from `table` (WHERE .....)
Tips:
/**
* 复制新纪录的时候,可能要更新id或者是部分数据(假设id自增加的情况)
*
* text_aa 为固定值 ,可在脚本调用中赋变量值 如($aa)
* 注意'text_aa' 与 `cc` 的区别 ......
数据库设计:
--
-- 数据库: `test`
--
-- --------------------------------------------------------
--
-- 表的结构 `menu`
--
CREATE TABLE IF NOT EXISTS `menu` (
`ID` int(10) unsigned NOT NULL auto_increment,
`PID` int(11) NOT NULL,
`TITLE` varchar(200) NOT NULL,
`REMARK` varchar(200) NOT ......