简答网站内容建设的时候内链重要性,wordpress禁止查看源码,朝阳网站开发公司,2018做网站还赚钱吗作者#xff1a;李祥敬2010-03-04/17:57Ubuntu mysql对于电脑使用的玩家的常用软件#xff0c;然后我就学习及深入的研究Ubuntu mysql#xff0c;在这里和大家一起探讨Ubuntu mysql的使用方法#xff0c;希望对大家有用。1、如果Ubuntu mysql的data数据很少#xff0c;内存…作者李祥敬2010-03-04/17:57Ubuntu mysql对于电脑使用的玩家的常用软件然后我就学习及深入的研究Ubuntu mysql在这里和大家一起探讨Ubuntu mysql的使用方法希望对大家有用。1、如果Ubuntu mysql的data数据很少内存足够大可以把data防止到内存盘中。linux如下设置内存盘mount -t ramfs none /ram默认使用内存一半如果内存不够大系统有多个硬盘则把Ubuntu mysql应用程序和data目录分开到不同硬盘上。2、Ubuntu mysql的表设置为myiasm比同等条件下的innodb能快20倍以上3、导入完成以后才创建数据库索引4、导入完成以后根据需要转换为其他engine比如innodb5、多条数据插入一个表可以使用多记录方式insert into tablename values(xxx,xxx),(yyy,yyy)...;6、如果多个Ubuntu mysql执行导入可以使用delayedinsert delayed into tablename values(sss,ssss);7、大文件sql文件可以用split分成多份再导8、同等条件下redhat比ubuntu强很多(几乎肯定)9 性能调整技巧(Performance tuning tips)1. 如果 Unix top 或 Windows 任务管理器(Task Manager) 显示服务的 CPU 占用率小于 70%(shows that the CPU usage percentage with your workload is less than 70 %,)你的系统瓶颈可能在磁盘读写上。或许你提交了大量的事务或者是缓冲池(buffer pool)太小了。将缓冲池设大点会有所帮助但一定要注意不能大于物理内存的 80%。2. 在一个事务中包含几个修改。如果事务对数据库进行了修改那么在这个事务提交时 InnoDB 必须刷新日志到磁盘上。因为硬盘的旋转速度通常至多为 167 转/秒那么只要磁盘不欺骗操作系统提交的事务数目限止也同样为 167 次/秒·用户。3. 如果掉失最近的几个事务无所谓的话可以在 my.cnf 文件中将参数 innodb_flush_log_at_trx_commit 设置为 0。InnoDB 无论如何总是尝试一秒刷新(flush)一次日志尽管刷新并不能得到保证。4. 将日志文件(log files)设大一点使日志文件的总和正好与缓冲池(buffer pool)一样大。当 InnoDB 用光日志文件的空间时它不得不在一个时间点上将缓冲池内修改过的内容写到磁盘上。 小的日志文件可能引起不必要的磁盘写操作。但是大的日志文件的缺点就是在数据恢复时将占用较长的时间。5. 同样 log buffer 尽量设大点比如说 8 MB。6. 如果要存储变长的字符串或字段可能会包含大量的 NULLs请使用 VARCHAR 型字段代替 CHAR 。一个 CHAR(n) 字段总是使用 n bytes 来存储数据即使这个字符串很短或是一个 NULL 值。较小的表更加适合缓冲池同时能够减少磁盘 I/O 。7. (适合从 3.23.41 以上版本) 在某些版本的 Linux 和 Unixes 中使用 Unix fsync 或其它类似的方法将文件刷新到磁盘是异常地慢的。InnoDB 默认的方法就是 fsync 。如果你对数据库系统的磁盘写性能不能感到满意你可以尝试在 my.cnf 中将 innodb_flush_method 设置为 O_DSYNC尽管 O_DSYNC 选项在多数的系统上看起来比较慢。8. 在向 InnoDB 导入数据时请确认 Ubuntu mysql 没有打开 autocommit1 。否则每个插入语句都要将 log 刷新到磁盘。在你的 SQL 导入文件的第一行加入set autocommit0;并在最后一行加入commit;如果使用 Ubuntu mysqldump 选项 --opt你将会得到一个快速导入 InnoDB 表的转储(dump)文件甚至可以不再使用上面所提的 set autocommit0; ... commit; 。9. 小心 insert 集全的大回滚(roolback)在插入时 InnoDB 使用插入缓冲来减少磁盘 I/O但在相应的回滚中却没有使用这样的机制。一个 disk-bound rollback 可能会花费相应插入时间的 30 倍。如果发生一个失控的回滚你可以查看第 6.1 章节的技巧来停止它。10. 同样也要小心一个大的 disk-bound 的操作。使用 Drop TABLE 或 TRUNCATE (从 Ubuntu mysql-4.0 以上) 来清空一个表而不要使用 Delete FROM yourtable。11. 如果需要插入大量记录行可以使用多行(multi-line)的 Insert 来减少客户端与服务器端的通信开销Insert INTO yourtable VALUES (1, 2), (5, 5);这个技巧对插入任何表均有效而不仅仅是 InnoDB。12. 如果在辅键上有 UNIQUE 约束从 3.23.52 和 4.0.3 开始可以通过在一个导入会话中将唯一键检查(uniqueness check)关闭来提高数据导入速度SET UNIQUE_CHECKS0;一个大的表导入这将减少大量的磁盘 I/O因为这时 InnoDB 可能使用自身的插入缓冲来分批地记录辅助索引。13. 如果在表中有一个子 FOREIGN KEY 约束从 3.23.52 和 4.0.3 开始可以通过在一个导入会话中将外键检查(foreign key check)关闭来提高数据导入速度SET FOREIGN_KEY_CHECKS0;对一个大的表导入这将减少大量的磁盘 I/O。9.1 InnoDB 监视器(Monitors)从版本 3.23.42 开始InnoDB 中就包含了 InnoDB Monitors它可以显示出 InnoDB 的内部状态。从版本 3.23.52 和 4.0.3 开始你可以使用一个新的 SQL 命令SHOW INNODB STATUS来读取标准 InnoDB Monitor 给 SQL client 的输出信息。这些信息对性能调整有益。另外一个使用 InnoDB Monitors 方法就是让它在服务程序 Ubuntu mysqld 的标准输出上持续地写出信息。当开关打开时InnoDB Monitors 大约每 15 秒显示一次数据(注意Ubuntu mysql 的客户端并不会显示任何东西)。一个简单地使用它的方法就是以一个命令行方式执行 Ubuntu mysqld 。否则输出将会定向到 Ubuntu mysql 服务错误日志(error log file)中 yourhostname.err (在 Windows 下为 Ubuntu mysql.err)在 Windows 系统中必须在 MS-DOS 使用提示符下以 --console 选项运行 Ubuntu mysqld-max 来指令信息输出在命令提示符窗口上。显示的信息包含下列信息* 每一个活动的事务(active transaction)保持的表和记录锁定* 事务的锁等待 (lock waits of a transactions)* 线程的信号量等待 (semaphore waits of threads)* 文件 I/O 的等待请求 (pending file i/o requests)* 缓冲池(buffer pool)的统计信息* InnoDB 主线程的 purge buffer 和 insert buffer 归并活动(merge activity)通过下列的 SQL 命令可以使标准的 InnoDB Monitor 记录到标准的 Ubuntu mysqld 的输出上Create TABLE innodb_monitor(a int) type innodb;通过它来停止Drop TABLE innodb_monitor;Create TABLE 句法只不过是为了通过 Ubuntu mysql SQL 语法分析而提供给 InnoDB 引擎命令的一种方式那个被创建的表根本与 InnoDB Monitor 无任何关系。如果你在监视器运行着的状态下关闭数据库并且你需要再次启动监视器 那么你不得不在发出一个新的 Create TABLE 来启动监视器之前先移除(drop)这个表。与之相类似的你可以启动 innodb_lock_monitor 它在某些方面与 innodb_monitor 一致但是它会显示更多的锁定信息。一个单独的 innodb_tablespace_monitor 将显示在现有表空间内所建立的文件段列表以及可以分配数据结构的有效表空间。从 3.23.44 开始提供了 innodb_table_monitor 通过它可以获得 InnoDB 内部数据字典的信息。