ubuntu mysql 内存满了_Ubuntu mysql可以把data防止到内存盘中

作者:

李祥敬

2010-03-04/17:57

Ubuntu 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,比如innodb

5、多条数据插入一个表,可以使用多记录方式: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 没有打开 autocommit=1 。否则每个插入语句都要将 log 刷新到磁盘。在你的 SQL 导入文件的第一行加入

set autocommit=0;并在最后一行加入commit;如果使用 Ubuntu mysqldump 选项 --opt,你将会得到一个快速导入 InnoDB 表的转储(dump)文件,甚至可以不再使用上面所提的 set autocommit=0; ... 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_CHECKS=0;一个大的表导入这将减少大量的磁盘 I/O,因为这时 InnoDB 可能使用自身的插入缓冲来分批地记录辅助索引。

13. 如果在表中有一个子 FOREIGN KEY 约束,从 3.23.52 和 4.0.3 开始,可以通过在一个导入会话中将外键检查(foreign key check)关闭来提高数据导入速度:SET FOREIGN_KEY_CHECKS=0;对一个大的表导入这将减少大量的磁盘 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 内部数据字典的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原型(Prototype)的场景是不支持循环依赖的

原型(Prototype)的场景是不支持循环依赖的,通常会走到AbstractBeanFactory类中下面的判断,抛出异常。

网络工程中,VLAN到底有什么作用?

什么是VLAN呢?VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。在IEEE802.1Internetworking委员会结束了对VLAN初期标准的修订工作的时候。新出台的标准进一步完善了VLAN的体…

java的decode_Java decode机试题

/**** java编写encode方法和decode方法,机试题 请你用java,c,c* 中任何一种语言实现两个函数encode()和decode(),分别实现对字符串的变换和复原。* 变换函数encode()顺序考察以知字符串的字符,按以下规则逐组生成新字符…

hrjava项目原型html_Mockplus for Mac(原型设计工具)

Mockplus for Mac是Mac平台上一款简单、快速的原型设计工具,无需任何编程,不需要任何编程基础知识,帮你快速使用Mockplus设计图形。Mockplus封装了近200个组件,提供3000个以上的图标素材。做图时,只需要把这些组件放入…

Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引

问题内容是:给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引。 比如:给定nums [2, 7, 11, 15], target 9 那么要返回 [0, 1],因为2 7 9 这道题的优解是,一次遍历HashMap: 先去…

java 正则表达式 提取ip_java正则表达式提取地址中的ip和端口号

由于我需要用到java正则表达式提取地址中的ip和端口号,所以我就写了一个demo,测试一下,下面是demopublic class Test0810_1 {public static void main(String[] args) {//通过控制板输入想要输入的地址,然后测试是否符合规则Scann…

SQL语言基础:常用的数据查询语句

1、创建表语法格式&#xff1a;creat table <表名> (<,列名><数据类型>[列级完整性约束条件]<,列名><数据类型>[列级完整性约束条件]...[,<表级完整性约束条件>]);列级完整性约束条件&#xff1a;主键、外键 、唯一 unique、检查 、默认值…

两个不同网段的局域网如何互通_不同网段之间如何通信?

计算机之前是如何实现互相通信的呢&#xff1f;正文首先&#xff0c;计算机之间通信人为设定一个准则&#xff0c;这个准则是什么呢&#xff1f;如果两台计算机在一个相同网段&#xff0c;不需要辅助设备(网关)的帮助&#xff0c;可以直接通信。如果两台计算机在不同网段&#…

Java是值传递还是引用传递?

Java是值传递&#xff1a; &#xff08;1&#xff09;基本类型作为参数传递时&#xff0c;是传递值的拷贝&#xff0c;无论你怎么改变这个拷贝&#xff0c;原值是不会改变的&#xff1b; &#xff08;2&#xff09;对象的引用作为参数传递时&#xff0c;是把对象在内存中的地址…

SpringCloud Gateway的组成结构

SpringCloud Gateway结构 SpringCloud Gateway的底层基于Netty&#xff0c;主要组成有Predicates&#xff08;谓词或者断言&#xff09;、Route&#xff08;路由&#xff09;、Filter&#xff08;过滤器&#xff09; 思维导图----------SpringCloud Gateway的组成&#xff1a; …

java resource放入的文件没有生成在classes中_快速部署版@开源在线考试系统一键生成各种题型试卷且实时判卷...

首先声明此项目来自开源网&#xff0c;小编也是爱好者&#xff1b;阅读本文之前相信已经阅读过【开源在线考试系统一键生成各种题型试卷且可以实时判卷】开源在线考试系统一键生成各种题型试卷且可以实时判卷本文分享快速部署版jar包&#xff0c;原项目前后台是单独项目&#x…

java 三大框架面试题

1.Hibernate工作原理及为什么要用&#xff1f; 原理&#xff1a; 1.读取并解析配置文件 2.读取并解析映射信息&#xff0c;创建SessionFactory3.打开Session 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用&#xff1a; 1. 对J…

SQL语言基础:SQL中的数据完整性约束用法

前言数据库的完整性是指数据库正确性和相容性&#xff0c;是防止合法用户使用数据库时向数据库加入不符合语义的数据&#xff0c;从而保证了数据库中的数据是正确的&#xff0c;避免非法的更新操作。1、主键约束1.1 完整性约束条件完整性约束条件作用的对象有关系、元组、列三种…

SpringCloud Gateway的工作方式

SpringCloud Gateway工作方式 从官网的图来看&#xff0c;并不是特别复杂&#xff0c;首先客户端请求都会先经过Gateway Handler Mapping&#xff0c;匹配上就通过Gateway Web Handler转给过滤器处理&#xff0c;过滤器分为PreFilter&#xff08;前置过滤器&#xff09;、PostF…

java制定年月日第几天_(JAVA)输入年月日,计算日期是今年的第几天?

这个代码非常正确&#xff0c;还解决了2月份等天数不对的问题。你可以试试看&#xff0c;手工代码&#xff0c;记得采纳&#xff0c;非常感谢。importjava.util.Scanner;publicclasspractice{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);System.out.pr…

后端:414 Request-URI Too Large解决方案

目录 一、get请求改为Post请求 二、调整前端请求参数的逻辑 三、服务器配置调整 3.1 Java项目 3.2 PHP项目&#xff1a; 3.3 Net项目 3.4 nginx配置文件修改内容&#xff1a; Web项目接口请求会出现414 Request-URI Too Large这个错误 下面给大家分享一下相关解决办法&#xf…

面向对象和面向过程_程序员给你解释:面向对象和面向过程的区别,到底是怎么回事?...

今天下午在一个组的项目回顾会议上&#xff0c;这个同事讲了自己用DDD思想对三个模块的重构。把之前在Service层的一些业务逻辑下沉到了领域层里&#xff0c;由之而引起的讨论。部门经理&#xff1a;“其实你的业务逻辑总体并没有少&#xff0c;只是把边界重新划分了一下。”一…

Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析...

前言 前些天&#xff0c;测试MM发现了一个比较奇怪的bug。 具体表现是&#xff1a; 1、将app包通过电脑QQ传送到手机QQ上面&#xff0c;点击安装&#xff0c;安装后选择打开app &#xff08;此间的应用逻辑应该是要触发 【闪屏页Activity】&#xff0c; 然后跳转 【主页Activit…

SQL语言基础:SQL授权相关知识笔记​

1、数据控制数据控制是控制对用户存取的权力&#xff0c;由DBA来决定。DBMS数据控制与功能&#xff1a;1、通过GRANT和REVOKE将授权通知系统&#xff0c;并存入数据字典。2、当用户发起请求时&#xff0c;根据授权情况检查是否执行操作请求。SQL标准包括 delete、insert、selec…

JVM的位置

对于JVM的位置&#xff1a; JVM是运行在操作系统之上的,它与硬件没有直接的交互JVM是运行在操作系统之上的&#xff0c;与硬件没有直接的交互&#xff0c;但是可以调用底层的硬件&#xff0c;用JIN &#xff08;Java本地接口调用底层硬件接口&#xff0c;了解下就好&#xff0…