怎么使用mysql 拆分语句将A列拆分成D,E两列,麻烦给下对于的完整语句

指定导出的目录和文件名

有的时候需要把在一张表中用 select 语句查询出来的结果保存到另一张结构相同的表中可以有几种方法来实现:

在命令行下使用一对SQL语句完成该操作:

查询出数据库jc1992中表jc_archives中发布时间晚于2014年9月1日的数据并保存在本地磁盘D的mysql 拆分tmp目录下,保存为1.sql在命令行中输入:

 

再把保存查询结果的1.sql导入箌另一数据库data_tmp的表archives中,在命令行中输入:

 

这样就把第一张表中的查询结果导入了第二张表

要注意的是在导入时,两张表的主键或者唯一索引的值不能有重复否则会跳过不执行或者报警告:

导出查询结果:使用mysql 拆分自带的转存数据库工具musqldump

命令行进入musqldump,使用语句

查询出数据庫jc1992中jc_arctiny的发布时间晚于2014年9月1日的数据并保存在本地磁盘D的mysql 拆分tmp目录下保存为2.sql,在命令行中输入:

 

2.sql中保存的是完整的SQL语句用记事本打开如圖:

再把保存查询结果的2.sql导入到另一数据库data_tmp的表中,在命令行中输入:

此时数据库data_tmp中多了一张表jc_arctiny表里的数据正是查询出来的的那部分数據。

注意:此方法导出时用的是mysql 拆分dump工具而导入时用的是mysql 拆分命令。而且此方法由于导出的是完整的SQL语句包括创建和设计数据库,所鉯只适用于恢复数据而不适用于将一张表中的数据导入到另一张表里,不过也可以使用保存文件中的INSERT语句把查询出的数据插入到另一張表中,过程要周折一些方法一对于SQL语句的设计更灵活一些。


}

  对于查詢占主要的应用来说索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的或者说没有添加更为有效的索引导致。如果不加索引的话那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少那么不加索引会引起致命的性能下降。但是也不是什么情 况都非得建索引不可比如性别可能就只有两个值,建索引不仅没什麼优势还会影响到更新速度,这被称为过度索引

  如果我们是在area和age上分别创建单个索引的话,由于查询每次只能使用一个索引所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率如果我们創建了(area, age, salary)的复合索引,那么其实相当于创建了(area,age,salary)、 (area,age)、(area)三个索引这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边依次递减。

064 索引不会包含有NULL值的列

  只要列中包含有NULL值都将不会被包含在索引中复合索引Φ只要有一列含有NULL值,那么这一列对于此复合索引就是无效的所以我们在设计时不要让字段的默认值为NULL。

  对串列进行索引如果可能应该指定一个前缀长度。例如如果有一个CHAR(255)的列,如果在前10个或20个字符内多数值是惟一的,那么就不要对整个列进行索引短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

066 排序的索引问题

  mysql 拆分查询只使用一个索引因此如果where孓句中已经使用了索引的话,那么order by中的列是不会使用索引的因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引

  一般情况下不鼓励使用like操作,如果非使用不可如何使用也是一个問题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引

数据库设计数据类型选择需要注意哪些地方">068 mysql 拆分数据库设计数据类型选择需要注意哪些地方?

  VARCHAR和CHAR类型,varchar是变长的需要额外的1-2个字节存储,能节约空间可能会对性能有帮助。但由于是变长可能发生碎片,如更新数据;
  使用ENUM(mysql 拆分的枚举类)代替字符串类型数据实际存储为整型。
  要尽可能地避免使用字符串来做标识符因为它们占用了很多涳间并且通常比整数类型要慢。特别注意不要在MYISAM表上使用字符串标识符MYISAM默认情况下为字符串使用了压缩索引(Packed Index),这使查找更为缓慢據测试,使用了压缩索引的MYISAM表性能要慢6倍
  还要特别注意完全‘随机’的字符串,例如由MD5()、SHA1()、UUID()产生的它们产生的每一個新值都会被任意地保存在很大的空间范围内,这会减慢INSERT及一些SELECT查询1)它们会减慢INSERT查询,因为插入的值会被随机地放入索引中这会导致分页、随机磁盘访问及聚集存储引擎上的聚集索引碎片。2)它们会减慢SELECT查询因为逻辑上相邻的行会分布在磁盘和内存中的各个地方。3)隨机值导致缓存对所有类型的查询性能都很差因为它们会使缓存赖以工作的访问局部性失效。如果整个数据集都变得同样“热”的时候那么把特定部分的数据缓存到内存中就没有任何的优势了。并且如果工作集不能被装入内存中缓存就会进行很多刷写的工作,并且会導致很多缓存未命中
  如果保存UUID值,就应该移除其中的短横线更好的办法是使用UHEX()把UUID值转化为16字节的数字,并把它保存在BINARY(16)列Φ

069 不要在列上进行运算

  不能用null作索引,任何包含null值的列都将不会被包含在索引中即使索引有多列这样的情況下,只要这些列中有一列含有null该列就会从索引中排除。也就是说如果某列存在空值即使对该列建索引也不会提高性能。
  任何在where孓句中使用is null或is not null的语句优化器是不允许使用索引的

  对于有联接的列,即使最后的联接值为一个静态值优化器是不会使用索引嘚。

072 mysql 拆分几种备份方式(重点)

  1、逻辑备份:使用mysql 拆分自带的mysql 拆分dump工具进行备份备份成sql文件形式。
    優点:最大好处是能够与正在运行的mysql 拆分自动协同工作在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定不允许其怹用户修改(只能访问)。可能会阻止修改操作sql文件通用方便移植。
    缺点:备份的速度比较慢如果是数据量很多的时候。就很耗時间如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中意味着要锁定表(一般是读锁定,只能读不能写入数据)那麼服务就会影响的。
  2、物理备份:直接拷贝mysql 拆分的数据目录
  直接拷贝只适用于myisam类型的表。这种类型的表是与机器独立的但实際情况是,你设计数据库的时候不可能全部使用myisam类型表你也不可能因为myisam类型表与机器独立,方便移植于是就选择这种表,这并不是选擇它的理由
    缺点:你不能去操作正在运行的mysql 拆分服务器(在拷贝的过程中有用户通过应用程序访问更新数据,这样就无法备份当時的数据)可能无法移植到其他机器上去
  my没有增量备份的机制。当数据量太大的时候备份是一个很大的问题还好mysql 拆分数据库提供了┅种主从备份的机制(也就是双机热备)
    优点:适合数据量大的时候。现在明白了大的互联网公司对于mysql 拆分数据备份,都是采用热機备份搭建多台数据库服务器,进行主从复制

073 想知道一个查询用到了哪个index,如何查看?

  explain显示了mysql 拆汾如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句使用方法,在select语句前加上explain就可以了所以使鼡explain可以查看。

074 数据库不能停机请问如何备份? 如何进行全备份和增量备份?

  可鉯使用逻辑备份双机热备份
  完全备份:完整备份一般一段时间进行一次且在网站访问量最小的时候,这样常借助批处理文件定時备份主要是写一个批处理文件在里面写上处理程序的绝对路径然后把要处理的东西写在后面,即完全备份数据库
  增量备份:对ddl囷dml语句进行二进制备份。且f里如何配置?

  2、select * from information_/pcg/)针对运行在奔腾处理器系统上的程序进行优化用pgcc编译mysql 拆分源代码,总体性能可提高10%当嘫如果你的服务器不是用奔腾处理器,就不必用它了因为它是专为奔腾系统设计的。
    1.2、仅使用你想使用的字符集编译mysql 拆分
    mysql 拆分目前提供多达24种不同的字符集为全球用户以他们自己的语言插入或查看表中的数据。却省情况下mysql 拆分安装所有者这些字符集,热然而最好的选择是指选择一种你需要的。如禁止除Latin1字符集以外的所有其它字符集:
    1.3、将mysql 拆分d编译成静态执行文件
    将mysql 拆分d编译成静态执行文件而无需共享库也能获得更好的性能。通过在配置时指定下列选项可静态编译mysql 拆分d。
    1.4、配置样本
  三、表类型(mysql 拆分中表的类型)
  很多mysql 拆分用户可能很惊讶mysql 拆分确实为用户提供5种不同的表类型,称为DBD、HEAP、ISAM、MERGE和MyIASMDBD归为事务安全类,而其他为非事务安全类
    3.1、事务安全
    Berkeley DB(DBD)表是支持事务处理的表,它提供mysql 拆分用户期待已久的功能-事务控制事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行
    3.2、非事务安全
    HEAP表是mysql 拆分中存取数据朂快的表。这是因为他们使用存储在动态内存中的一个哈希索引另一个要点是如果mysql 拆分或服务器崩溃,数据将丢失
    ISAM表是早期mysql 拆分版本的缺省表类型,直到MyIASM开发出来建议不要再使用它。
    MERGE是一个有趣的新类型在3.23.25之后出现。一个MERGE表实际上是一个相同MyISAM表的集合合并成一个表,主要是为了效率原因这样可以提高速度、搜索效率、修复效率并节省磁盘空间。
    这是mysql 拆分的缺省表类型(5.5.5の前)它基于IASM代码,但有很多有用的扩展MyIASM比较好的原因:
    MyIASM表小于IASM表,所以使用较少资源
    MyIASM表在不同的平台上二进制层鈳移植。
    更大的键码尺寸更大的键码上限。
    3.3、指定表类型
  mysql 拆分服务器本身提供了几条内置命令用于帮助优化
    SHOW还能做更多的事情。它可以显示关于日志文件、特定数据库、表、索引、进程和权限表中有价值的信息
    当你面对SELECT语句时,EXPLAIN解释SELECT命令如何被处理这不仅对决定是否应该增加一个索引,而且对决定一个复杂的Join如何被mysql 拆分处理都是有帮助的
    OPTIMIZE语句允许伱恢复空间和合并数据文件碎片,对包含变长行的表进行了大量更新和删除后这样做特别重要。OPTIMIZE目前只工作于MyIASM和BDB表

085 mysql 拆分你都修改了那些配置文件来进行优化(问配置文件中具体修改的内容)?

  innodb_buffer_pool_size:这是你安裝完InnoDB后第一个应该设置的选项。缓冲池是数据和索引缓存的地方:这个值越大越好这能保证你在大多数的读取操作时使用的是内存而不昰硬盘。典型的值是5-6GB(8GB内存)20-25GB(32GB内存),100-120GB(128GB内存)
  innodb_log_file_size:这是redo日志的大小。redo日志被用于确保写操作快速而可靠并且在崩溃时恢复一直到mysql 拆分 5.1,它嘟难于调整因为一方面你想让它更大来提高性能,另一方面你想让它更小来使得崩溃后更快恢复幸运的是从mysql 拆分 5.5之后,崩溃恢复的性能的到了很大提升这样你就可以同时拥有较高的写入性能和崩溃恢复性能了。一直到mysql 拆分 5.5redo日志的总尺寸被限定在4GB(默认可以有2个log文件)。這在mysql 拆分 5.6里被提高
  一开始就把innodb_log_file_size设置成512M(这样有1GB的redo日志)会使你有充裕的写操作空间。如果你知道你的应用程序需要频繁的写入数据并且伱使用的时mysql 拆分 5.6你可以一开始就把它这是成4G。max_connections:如果你经常看到‘Too many connections’错误是因为max_connections的值太低了。这非常常见因为应用程序没有正确的关闭數据库连接你需要比默认的151连接数更大的值。max_connection值被设高了(例如1000或更高)之后一个主要缺陷是当服务器运行1000个或更高的活动事务时会变的没囿响应在应用程序里使用连接池或者在mysql 拆分里使用进程池有助于解决这一问题。
  从mysql 拆分 5.5版本开始InnoDB就是默认的存储引擎并且它比任哬其他存储引擎的使用都要多得多。那也是为什么它需要小心配置的原因
ON)。每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间这对於一些高级特性也是有必要的,比如数据压缩但是它不会带来任何性能收益。你不想让每张表一个文件的主要场景是:有非常多的表(仳如10k+)
  mysql 拆分 5.6中,这个属性默认值是ON因此大部分情况下你什么都不需要做。对于之前的版本你必需在加载数据之前将这个属性设置為ON因为它只对新创建的表有影响。
  innodb_flush_log_at_trx_commit:默认值为1表示InnoDB完全支持ACID特性。当你的主要关注点是数据安全的时候这个值是最合适的比如茬一个主节点上。但是对于磁盘(读写)速度较慢的系统它会带来很巨大的开销,因为每次将改变flush到redo日志都需要额外的fsyncs将它的值设置為2会导致不太可靠(reliable)因为提交的事务仅仅每秒才flush一次到redo日志,但对于一些场景是可以接受的比如对于主节点的备份节点这个值是可以接受的。如果值为0速度就更快了但在系统崩溃时可能丢失一些数据:只适用于备份节点。
  innodb_flush_method: 这项配置决定了数据和日志写入硬盘的方式一般来说,如果你有硬件RAID控制器并且其独立缓存采用write-back机制,并有着电池断电保护那么应该设置配置为O_DIRECT;否则,大多数情况下应将其设为fdatasync(默认值)sysbench是一个可以帮助你决定这个选项的好工具。
  innodb_log_buffer_size: 这项配置决定了为尚未执行的事务分配的缓存其默认值(1MB)一般来說已经够用了,但是如果你的事务中包含有二进制大对象或者大文本字段的话这点缓存很快就会被填满并触发额外的I/O操作。看看Innodb_log_waits状态变量如果它不是0,增加innodb_log_buffer_size
5.6的默认值)并利用其他方法加速查询:优化索引、增加拷贝分散负载或者启用额外的缓存(比如memcache或redis)。如果你已經为你的应用启用了query cache并且还没有发现任何问题query cache可能对你有用。这是如果你想停用它那就得小心了。
  log_bin:如果你想让数据库服务器充當主节点的备份节点那么开启二进制日志是必须的。如果这么做了之后还别忘了设置server_id为一个唯一的值。就算只有一个服务器如果你想做基于时间点的数据恢复,这(开启二进制日志)也是很有用的:从你最近的备份中恢复(全量备份)并应用二进制日志中的修改(增量备份)。二进制日志一旦创建就将永久保存所以如果你不想让磁盘空间耗尽,你可以用   记录二进制日志不是没有开销的所以洳果你在一个非主节点的复制节点上不需要它的话,那么建议关闭这个选项
  skip_name_resolve:当客户端连接数据库服务器时,服务器会进行主机名解析并且当DNS很慢时,建立连接也会很慢因此建议在启动服务器时关闭skip_name_resolve选项而不进行DNS查找。唯一的局限是之后GRANT语句中只能使用IP地址了洇此在添加这项设置到一个已有系统中必须格外小心。

    ? CPU选择:多核的CPU主频高的CPU
    ? 内存:更大的内存
    ? 磁盘选择:更快的转速、RAID、阵列卡,
    ? 网络环境选择:尽量部署在局域网、SCI、光缆、千兆网、双网线提供冗余、0.0.0.0多端口绑定监听
  II操作系统级优化
    ? 使用64位的操作系统更好的使用大内存。
    ? 优化内核参数
    ? 加大文件描述符限制
    ? 文件系统选择 xfs
    III.1 存储引擎的选择
      ? Myisam:数据库并发不大读多写少,而且都能很好的用到索引,sql语句比较简单的应用TB数据仓库
      ? Innodb:并发访问大,写操作比较多有外键、事务等需求的应用,系统内存较大
    III.2 命名规则
      ? 多数开发语言命名规则:比如MyAdress
      ? 多数开源思想命名规则:my_address
      ? 避免随便命名
    III.3 字段类型选择
    字段类型的选择的一般原则:
      ? 根据需求选择合适的字段类型,在满足需求的情况下字段类型尽可能小
      ? 只分配满足需求的最小字符数,不要太慷慨 原因:更小的字段类型更小的字符数占用更少的内存,占用更少的磁盘空间占用更少的磁盘IO,以及占用更少的带宽
    对于varchar和char的选择要根据引擎和具体情况的不同来选择,主要依据如下原则:
      1.如果列数据项的大小一致或者相差不大则使鼡char。
      2.如果列数据项的大小差异相当大则使用varchar。
      3.对于MyISAM表尽量使用Char,对于那些经常需要修改而容易形成碎片的myisam囷isam数据表就更是如此它的缺点就是占用磁盘空间。
      4.对于InnoDB表因为它的数据行内部存储格式对固定长度的数据行和可变长度嘚数据行不加区分(所有数据行共用一个表头部分,这个标头部分存放着指向各有关数据列的指针)所以使用char类型不见得会比使用varchar类型恏。事实上因为char类型通常要比varchar类型占用更多的空间,所以从减少空间占用量和减少磁盘i/o的角度使用varchar类型反而更有利。
      5.表Φ只要存在一个varchar类型的字段那么所有的char字段都会自动变成varchar类型,因此建议定长和变长的数据分开
    III.4 编码选择
      单字節 latin1
      多字节 utf8(汉字占3个字节,英文字母占用一个字节)如果含有中文字符的话最好都统一采用utf8类型避免乱码的情况发生。
    III.5 主键选择原则
    注:这里说的主键设计主要是针对INNODB引擎
      1.能唯一的表示行
      2.显式的定义一个数值类型自增字段的主键,这个字段可以仅用于做主键不做其他用途。
      3.mysql 拆分主键应该是单列的以便提高连接和筛选操作的效率。
      4.主键字段类型尽可能小能用SMALLINT就不用INT,能用INT就不用BIGINT
      5.尽量保证不对主键字段进行更新修改,防止主键字段发生变囮引发数据存储碎片,降低IO性能
      6.mysql 拆分主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等
      7.mysql 拆分主键应当有计算机自动生成。
      8.主键字段放在数据表的第一顺序
    推荐采用数值类型做主键并采用auto_increment属性让其洎动增长。
    III.6 其他需要注意的地方
      尽可能设置每个字段为NOT NULL除非有特殊的需求,原因如下:
        1.使用含囿NULL列做索引的话会占用更多的磁盘空间因为索引NULL列需要而外的空间来保存。
        2.进行比较的时候程序会更复杂。
        3.含有NULL的列比较特殊SQL难优化,如果是一个组合索引那么这个NULL 类型的字段会极大影响整个索引的效率。
        索引嘚优点:极大地加速了查询减少扫描和锁定的数据行数。
        索引的缺点:占用磁盘空间减慢了数据更新速度,增加了磁盘IO
      添加索引有如下原则:
        1 选择唯一性索引。
        2.为经常需要排序、分组和联合操作的字段建立索引
        3.为常作为查询条件的字段建立索引。
        4.限制索引的数据索引不是越多越好。
        5.尽量使用数据量少的索引对于大字段可以考虑前缀索引。
        6.删除不再使用或者很少使用的索引
        7.结合核心SQL优先考虑覆盖索引。
        8.忌用字符串做主键
      ? 反范式设计
      适当的使用冗余的反范式设計,以空间换时间有的时候会很高效
    ? 开启mysql 拆分复制,实现读写分离、负载均衡将读的负载分摊到多个从服务器上,提高服务器的处理能力
    ? 使用推荐的GA版本,提升性能
    ? 利用分区新功能进行大数据的数据拆分
  注意:全局参数一经设置随服務器启动预占用资源。
    INNODB 数据、索引、日志缓冲最重要的引擎参数根据(hit riatos和FILE I/O)判断
    线程连接的超时时间,尽量不要设置佷大推荐10s
    服务器允许的最大连接数,尽量不要设置太大因为设置太大的话容易导致内存溢出
    线程并发利用数量,(cpu+disk)*2,根據(os中显示的请求队列和tickets)判断
    当根据键进行分类操作时获得更快的–ORDER BY
    join连接使用全表扫描连接的缓冲大小根据select_full_join判断
    全表扫描时为查询预留的缓冲大小,根据select_scan判断
    临时内存表的设置如果超过设置就会转化成磁盘表,根据参数(created_tmp_disk_tables)判断
    记錄INNODB引擎的redo log文件设置较大的值意味着较长的恢复时间。
    系统可以使用O_DIRECT处理数据文件避免OS级别的cache,O_DIRECT模式提高数据文件和日志文件嘚IO提交性能
      1.0表示每秒进行一次log写入cache并flush log到磁盘。
      2.1表示在每次事务提交后执行log写入cache并flush log到磁盘。
    3.2表示在烸次事务提交后执行log数据写入到cache,每秒执行一次flush log到磁盘
    1.性能查的读语句,在innodb中统计行数,建议另外弄一张统计表采用myisam,定期莋统计.一般的对统计的数据不会要求太精准的情况下适用
    2.尽量不要在数据库中做运算。
    3.避免负向查询和%前缀模糊查询
    4.不在索引列做运算或者使用函数。
    5.不要在生产环境程序中使用select * from 的形式查询数据只查询需要使用的列。
    6.查询盡可能使用limit减少返回的行数减少数据传输时间和带宽浪费。
    7.where子句尽可能对查询列使用函数因为对查询列使用函数用不到索引。
    8.避免隐式类型转换例如字符型一定要用’’,数字型一定不要使用’’
    9.所有的SQL关键词用大写,养成良好的习惯避免SQL语句重复编译造成系统资源的浪费。
    10.联表查询的时候记得把小结果集放在前面,遵循小结果集驱动大结果集的原则
    11.开启慢查询,定期用explain优化慢查询中的SQL语句

087 mysql 拆分是怎么备份的(重点)

    做灾难恢复:对损坏的数据进荇恢复和还原
    需求改变:因需求改变而需要把数据还原到改变以前
    测试:测试新功能是否可用
  二、备份需要考虑的問题
    可以容忍丢失多长时间的数据;
    恢复数据要在多长时间内完;
    恢复的时候是否需要持续提供服务;
    恢复的对象,是整个库多个表,还是单个库单个表。
    1、根据是否需要数据库离线
      冷备(cold backup):需要关mysql 拆分服务读写请求均不允许状态下进行;
      温备(warm backup): 服务在线,但仅支持读请求不允许写请求;
      热备(hot backup):备份的哃时,业务不受影响
      1、这种类型的备份,取决于业务的需求而不是备份工具
      2、MyISAM不支持热备,InnoDB支持热备但昰需要专门的工具
    2、根据要备份的数据集合的范围
      完全备份:full backup,备份全部字符集
      增量备份: incremental backup 上次完全備份或增量备份以来改变了的数据,不能单独使用要借助完全备份,备份的频率取决于数据的更新频率
      差异备份:differential backup 上次唍全备份以来改变了的数据。
      建议的恢复策略:
        完全+增量+二进制日志
        完全+差异+二进制日誌
    3、根据备份数据或文件
      物理备份:直接备份数据文件
      优点:备份和恢复操作都比较简单能够跨mysql 拆汾的版本,恢复速度快属于文件系统级别的
      建议:不要假设备份一定可用,要测试mysql 拆分>check tables;检测表是否可用
      逻輯备份: 备份表中的数据和代码
      优点:恢复简单、备份的结果为ASCII文件可以编辑与存储引擎无关可以通过网络备份和恢复
      缺点:备份或恢复都需要mysql 拆分服务器进程参与备份结果占据更多的空间,浮点数可能会丢失精度 还原之后缩影需要重建
    2、配置文件;
    3、代码:存储过程、存储函数、触发器
    4、os相关的配置文件
    5、复制相关的配置
    6、二进制ㄖ志
  五、备份和恢复的实现
    2、利用mysql 拆分dump工具对数据进行备份和还原
    3、利用lvm快照实现几乎热备的数据备份与恢复
    4、基于Xtrabackup做备份恢复。
      1、快速可靠的进行完全备份
      2、在备份的过程中不会影响到事务
      3、支持数據流、网络传输、压缩所以它可以有效的节约磁盘资源和网络带宽。
      4、可以自动备份校验数据的可用性

088 mysql 拆分 简单的 怎么登入 怎么创建数据库bbb创建 用户 密码 授权

  1、安装配置,兩台服务器分别安装好mysql 拆分。采用单向同步的方式就是Master的数据是主的数据,然后slave主动去Master哪儿同步数据回来两台服务器的配置一样,紦关键的配置文件拷贝一下两台服务器做相同的拷贝配置文件操作。
  2、配置Master服务器要考虑我们需要同步那个数据库,使用那个用戶同步我们这里为了简单起见,就使用root用户进行同步并且只需要同步数据库abc。
  3、配置Slave服务器我们的slave服务器主要是主动去Master服务器哃步数据回来。
  4、测试安装首先查看一下slave的主机日志:检查是否连接正常, 在Master查看信息查看Master状态:查看Master下mysql 拆分进程信息:在slave上查看信息:查看slave状态:查看slave下mysql 拆分进程信息:再在Master的abc库里建立表结构并且插入数据,然后检查slave有没有同步这些数据就能够检查出是否设置荿功。

090 查询mysql 拆分数据库中用户密码,权限的命令

数据库死锁概念">091数据库死锁概念

  多数情况下可以认为如果一个资源被锁定,它总会在以后某个时间被释放而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都昰其他进程所需的由此造成每个进程都无法继续下去。简单的说进程A等待进程B释放他的资源,B又等待A释放他的资源这样就互相等待僦形成死锁。
  虽然进程在运行过程中可能发生死锁,但死锁的发生也必须具备一定的条件死锁的发生必须具备以下四个必要条件。
  1)互斥条件:指进程对所分配到的资源进行排它性使用即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源则请求者只能等待,直至占有资源的进程用毕释放
  2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求而该资源已被其它进程占有,此时请求进程阻塞但又对自己已获得的其它资源保持不放。
  3)不剥夺条件:指进程已获得的资源在未使用完之前,不能被剥夺只能在使用完时由自己释放。
  4)环路等待条件:指在发生死锁时必然存在一个进程——资源的环形链,即进程集合{P0P1,P2???,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源……,Pn正在等待已被P0占用的资源
  下列方法有助于朂大限度地降低死锁:
  (1)按同一顺序访问对象。
  (2)避免事务中的用户交互
  (3)保持事务简短并在一个批处理中。
  (4)使用低隔离级别
  (5)使用绑定连接。

092 数据库有几种数据保护方式(AAA)

  实现数据库安全性控制的瑺用方法和技术有:用户标识和鉴别;存取控制;视图机制;审计;数据;

  Union因为要进行重复值扫描所以效率低。洳果合并没有刻意要删除重复行那么就使用Union All两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);
  union和union all的区别是,union會自动压缩多个结果集合中的重复结果而union all则将所有的结果全部显示出来,不管是不是重复
  Union:对两个结果集进行并集操作,不包括偅复行同时进行默认规则的排序;
  Union All:对两个结果集进行并集操作,包括重复行不进行排序;
  Intersect:对两个结果集进行交集操作,鈈包括重复行同时进行默认规则的排序;
  Minus:对两个结果集进行差操作,不包括重复行同时进行默认规则的排序。
  可以在最后┅个结果集中指定Order by子句改变排序方式

095 在mysql 拆分服务器运行缓慢的情况下输叺什么命令能缓解服务器压力

  第一步 检查的状态
    通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲这也可能不是一个正常的状态,因为cpu可能正等待IO的完成除此之外,还应观注那些占用系统资源(cpu、内存)的进程
    1.1 使用sar来检查操作系统是否存在IO问题
    1.3 磁盘IO问题,处理方式:做raid10提高性能
    1.4 网络问题telnet一下mysql 拆分对外开放的端口,如果不通的话看看防火墙是否正确设置了。另外看看mysql 拆分是不是开启了skip-networking的选項,如果开启请关闭
  第二步 检查mysql 拆分参数
  第三步 检查mysql 拆分 相关状态值
    3.1 关注连接数
    3.2 关注下系统锁情况
    3.3 关注慢查询(slow query)日志

096 怎么导出表结构?

097 正常登入mysql 拆分后使用什么命囹查看其进程是否正常

  如果有SUPER权限,则可以看到全部的线程否则,只能看到自己发起的线程(这是指当前对应的mysql 拆分帐户运行的線程)。

099 mysql 拆分主从用什么方式传输日志

  mysql 拆分 复制基于主服务器在二进制日志中跟踪所囿对数据库的更改(更新、删除等等)每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以便从服务器可以对其数据拷贝执行相同的更新

100 数据库的备份方式

  1、完全备份,这是大多数人常用的方式它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象但它需要花费更多的时间和空间,所以一般推荐一周做一次完全备份。
  2、事务日志备份事务日志是一个单独的文件,它记录数据库的改变备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间为了使数据库具有鲁棒性,推荐每小时甚至更频繁的备份事务日志
  3、差异备份也叫增量备份。它是只备份数据库一部分的另一种方法它不使用事务日志,相反它使用整个数据库的一种新映象。它比最初的完全备份小因为它只包含自上佽完全备份以来所改变的数据库。它的优点是存储和恢复速度快推荐每天做一次差异备份。
  4、文件备份数据库可以由硬盘上的许哆文件构成。如果这个数据库非常大并且一个晚上也不能将它备份完,那么可以使用文件备份每晚备份数据库的一部分由于一般情况丅数据库不会大到必须使用多个文件存储,所以这种备份不是很常用

  如何在mysql 拆分某个表中随机抽取10条记录
  1.通过mysql 拆分内置的函数来操作,具体SQL代码如下:
  2.不要将大量的工作给数据库去做这样会导致数据库在某一集中并发时间内锁死并阻塞。建议通过随机生成一下1-X(总行数)之间的数字然后将这10个随机数字作为查询条件,具体语句如:
  可能你还要进行重复排除并且需要在程序中将10个值串联并连接进入SQL语句中。

102 如何查看连接mysql 拆分的当前用户

105 简单叙述一下mysql 拆分的优化(重点)

  1.数据库的设计:尽量把的更小的占磁盘空间.
    1) 盡可能使用更小的整数类型.(mediumint就比int更合适).
    2) 尽可能的定义字段为not null,除非这个字段需要null.
    3) 如果没有用到变长字段的话比如varchar,那就采用凅定大小的纪录格式比如char.
    4) 表的主索引应该尽可能的短.这样的话每条纪录都有名字标志且更高效.
    5) 只创建确实需要的索引。索引有利于检索记录但是不利于快速保存记录。如果总是要在表的组合字段上做搜索那么就在这些字段上创建索引。索引的第一部分必须是最常使用的字段.如果总是需要用到很多字段首先就应该多复制这些字段,使索引更好的压缩
    6) 所有数据都得在保存到数據库前进行处理。
    7) 所有字段都得有默认值
    8) 在某些情况下,把一个频繁扫描的表分成两个速度会快好多。在对动态格式表掃描以取得相关记录时它可能使用更小的静态格式表的情况下更是如此。
    1) 尽量使用长连接.
    3) 如果两个关联表要做比较话做比较的字段必须类型和长度都一致.
    7) 在一条insert语句中采用多重纪录插入格式.而且使用load data infile来导入大量数据,这比单纯的insert快好多.
    9) 还有就是date 类型的数据如果频繁要做比较的话尽量保存在unsigned int 类型比较快
    1) 磁盘搜索。并行搜索,把数据分开存放到多个磁盘中这样能加快搜索时间.
    2) 磁盘读写(IO)。可以从多个媒介中并行的读取数据
    3) CPU周期。数据存放在主内存中.这样就得增加CPU的个数来处理這些数据
    4) 内存带宽。当CPU要将更多的数据存放到CPU的缓存中来的话,内存的带宽就成了瓶颈.

106 如何确定有哪些存储引擎可用

  mysql 拆分> show engines; 显示了可用的数据库引擎的全部名单以及在当前的数据库服务器中是否支持这些引擎。

107 mysql 拆分数据库设计数据类型选择需要注意哪些地方?(重点)

  VARCHAR和CHAR类型varchar是变长的,需要额外的1-2个字节存储能节约空间,可能会对性能有帮助但由于是变长,可能发生碎片如更新数据;
使用ENUM代替字符串类型,数据实际存储为整型
  要盡可能地避免使用字符串来做标识符,因为它们占用了很多空间并且通常比整数类型要慢特别注意不要在MYISAM表上使用字符串标识符。MYISAM默认凊况下为字符串使用了压缩索引(Packed Index)这使查找更为缓慢。据测试使用了压缩索引的MYISAM表性能要慢6倍。
  还要特别注意完全‘随机’的芓符串例如由MD5()、SHA1()、UUID()产生的。它们产生的每一个新值都会被任意地保存在很大的空间范围内这会减慢INSERT及一些SELECT查询。
    1)它们会减慢INSERT查询因为插入的值会被随机地放入索引中。这会导致分页、随机磁盘访问及聚集存储引擎上的聚集索引碎片
    2)咜们会减慢SELECT查询,因为逻辑上相邻的行会分布在磁盘和内存中的各个地方
    3)随机值导致缓存对所有类型的查询性能都很差,因為它们会使缓存赖以工作的访问局部性失效如果整个数据集都变得同样“热”的时候,那么把特定部分的数据缓存到内存中就没有任何嘚优势了并且如果工作集不能被装入内存中,缓存就会进行很多刷写的工作并且会导致很多缓存未命中。
  如果保存UUID值就应该移除其中的短横线,更好的办法是使用UHEX()把UUID值转化为16字节的数字并把它保存在BINARY(16)列中。

109 innodb的事務与日志的实现方式

  (1)有多少种日志
    错误日志:记录出错信息,也记录一些警告信息或者正确的信息
    慢查询日誌:设置一个阈值将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中。
    二进制日志:记录对数据库执行更改的所有操作
    查询日志:记录所有对数据库请求的信息不论这些请求是否得到了正确的执行。
  (2)日志的存放形式
  (3)事务是洳何通过日志来实现的说得越深入越好。
  在Innodb存储引擎中事务日志是通过redo和innodb的存储引擎日志缓冲(Innodb log buffer)来实现 的,当开始一个事务的時候会记录该事务的lsn(log sequence number)号; 当事务执行时,会往InnoDB存 储引擎的日志的日志缓存里面插入事务日志;当事务提交时必须将存储引擎的日志缓冲寫入磁盘(通过 innodb_flush_log_at_trx_commit来控制),也就是写数据前需要先写日志。这种方式称为“预写日志方 式” innodb通过此方式来保证事务的完整性。也就意菋着磁盘上存储的数据页和内存缓冲池上面的页是不同步 的是先写入redo log,然后写入data file因此是一种异步的方式。
  隔离性: 通过锁实现
  原子性一致性持久性是通过redo和undo来完成的

}

对于mysql 拆分按照锁的粒度划分,將数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)、页级锁.

mysql 拆分中行级锁并不是直接锁记录,而是锁索引索引分为主键索引和非主键索引两種.

如果一条SQL语句操作(UPDATEDELETE)了主键索引,mysql 拆分就会锁定其主键索引;如果操作了非主键索引就会先锁定该非主键索引,再锁定相关的主键索引.

系统架构及实现对性能的影响

以下几类数据都是不适合在数据库中存放的:

1. 为查询缓存优化你的查询 

大多数的mysql 拆分服务器都开启了查询缓存这是提高性最有效的方法之一,而且这是被mysql 拆分的数据库引擎处理的当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中这样,后续的相同的查询就不用操作表而直接访问缓存结果了 

这里最主要的问题是,对于程序员来说这个事凊是很容易被忽略的。因为我们某些查询语句会让mysql 拆分不使用缓存。请看下面的示例: 

或是其它的诸如此类的SQL函数都不会开启查询缓存因为这些函数的返回是会不定的易变的。所以你所需要的就是用一个变量来代替mysql 拆分的函数,从而开启缓存 

使用 EXPLAIN 关键字可以让你知噵mysql 拆分是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈 

EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的……等等等等。 

挑一个你的SELECT语句(推荐挑选那个最复杂的有多表联接的),把关键字EXPLAIN加到前面伱可以使用phpmyadmin来做这个事。然后你会看到一张表格。下面的这个示例中我们忘记加上了group_id索引,并且有表联接:


当我们为 group_id 字段加上索引后:


当你查询表的有些时候你已经知道结果只会有一条结果,但因为你可能需要去fetch游标或是你也许会去检查返回的记录数。 

在这种情况丅加上 LIMIT 1 可以增加性能。这样一样mysql 拆分数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据 

下面的礻例,只是为了找一下是否有中国的用户很明显,后面的会比前面的更有效率(请注意,第一条中是Select *第二条是Select


我们可以看到,湔一个结果显示搜索了 7883 行而后一个只是搜索了两个表的 9 16 行。查看rows列可以让我们找到潜在的性能问题 

索引并不一定就是给主键或是唯┅的字段。如果在你的表中有某个字段你总要会经常用来做搜索,那么请为其建立索引吧。


从上图你可以看到那个搜索字串 “last_name LIKE ‘a%'”┅个是建了索引,一个是没有索引性能差了4倍左右。 

另外你应该也需要知道什么样的搜索是不能使用正常的索引的。例如当你需要茬一篇大的文章中搜索一个词时,如: “WHERE post_content LIKE ‘%apple%'”索引可能是没有意义的。你可能需要使用mysql 拆分全文索引 或是自己做一个索引(比如说:搜索关键词或是Tag什么的) 

5. Join表的时候使用相当类型的例并将其索引 如果你的应用程序有很多 JOIN 查询,你应该确认两个表中Join的字段是被建过索引的这样,mysql 拆分内部会启动为你优化JoinSQL语句的机制 

而且,这些被用来Join的字段应该是相同的类型的。例如:如果你要把 DECIMAL 字段和一个 INT 字段Join在一起mysql 拆分就无法使用它们的索引。对于那些STRING类型还需要有相同的字符集才行。(两个表的字符集有可能不一样) 

// 两个 state 字段应该是被建过索引的而且应该是相当的类型,相同的字符集

想打乱返回的数据行?随机挑一个数据真不知道谁发明了这种用法,但很多新掱很喜欢这样用但你确不了解这样做有多么可怕的性能问题。 

如果你真的想把返回的数据行打乱了你有N种方法可以达到这个目的。这樣使用只让你的数据库的性能呈指数级的下降这里的问题是:mysql 拆分会不得不去执行RAND()函数(很耗CPU时间),而且这是为了每一行记录去记行然后再对其排序。就算是你用了Limit 1也无济于事(因为要排序) 

下面的示例是随机挑一条记录 

从数据库里读出越多的数据那么查询就会变嘚越慢。并且如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载 

所以,你应该养成一个需要什么僦取什么的好的习惯 

我们应该为数据库里的每张表都设置一个ID做为其主键,而且最好的是一个INT型的(推荐使用UNSIGNED)并设置上自动增加的

僦算是你 users 表有一个主键叫 “email”的字段,你也别让它成为主键使用 VARCHAR 类型来当主键会使用得性能下降。另外在你的程序中,你应该使用表嘚ID来构造你的数据结构 

而且,在mysql 拆分数据引擎下还有一些操作需要使用主键,在这些情况下主键的性能和设置变得非常重要,比如集群,分区…… 

在这里只有一个情况是例外,那就是关联表外键也就是说,这个表的主键通过若干个别的表的主键构荿。我们把这个情况叫做外键比如:有一个学生表有学生的ID,有一个课程表有课程ID那么,成绩表就是关联表了其关联了学生表和课程表,在成绩表中学生ID和课程ID外键其共同组成主键。 

ENUM 类型是非常快和紧凑的在实际上,其保存的是 TINYINT但其外表上显示为字符串。这样一来用这个字段来做一些选项列表变得相当的完美。 

如果你有一个字段比如性别国家民族状态部门你知道这些字段的取值是有限而且固定的,那么你应该使用

mysql 拆分也有一个建议(见第十条)告诉你怎麼去重新组织你的表结构。当你有一个 VARCHAR 字段时这个建议会告诉你把其改成 ENUM 类型。使用

PROCEDURE ANALYSE() 会让 mysql 拆分 帮你去分析你的字段和其实际的数据并會给你一些有用的建议。只有表中有实际的数据这些建议才会变得有用,因为要做一些大的决定是需要有数据作为基础的 

例如,如果伱创建了一个 INT 字段作为你的主键然而并没有太多的数据,那么PROCEDURE ANALYSE()会建议你把这个字段的类型改成 MEDIUMINT 。或是你使用了一个 VARCHAR 字段因为数据不哆,你可能会得到一个让你把它改成 ENUM 的建议这些建议,都是可能因为数据不够多所以决策做得就不够准。 


一定要注意这些只是建议,只有当你的表里的数据越来越多时这些建议才会变得准确。一定要记住你才是最终做决定的人。 

除非你有一个很特别的原因去使用 NULL 徝你应该总是让你的字段保持 NOT NULL。这看起来好像有点争议请往下看。 

首先问问你自己“Empty”“NULL”有多大的区别(如果是INT,那就是0NULL)如果你觉得它们之间没有什么区别,那么你就不要使用NULL(你知道吗?在

不要以为 NULL 不需要空间其需要额外的空间,并且在你进行比較的时候,你的程序会更复杂 当然,这里并不是说你就不能使用NULL了现实情况是很复杂的,依然会有些情况下你需要使用NULL值。 

可以检查一些你绑定好的变量这样可以保护你的程序不会受到“SQL注入式攻击。当然你也可以手动地检查你的这些变量,然而手动的检查嫆易出问题,而且很经常会被程序员忘了当我们使用一些framework或是ORM的时候,这样的问题会好一些 

在性能方面,当一个相同的查询被使用多佽的时候这会为你带来可观的性能优势。你可以给这些Prepared Statements定义一些参数而mysql 拆分只会解析一次。 

虽然最新版本的mysql 拆分在传输Prepared Statements是使用二进制形势所以这会使得网络传输非常有效率。 

当然也有一些情况下,我们需要避免使用Prepared Statements因为其不支持查询缓存。但据说版本5.1后支持了 

囸常的情况下,当你在你的脚本中执行一个SQL语句的时候你的程序会停在那里直到没这个SQL语句返回,然后你的程序再往下继续执行你可鉯使用无缓冲查询来改变这个行为。 

发送一个SQL语句到mysql 拆分而并不像mysql 拆分_query()一样去自动fethch和缓存结果这会相当节约很多可观的内存,尤其是那些会产生大量结果的查询语句并且,你不需要等到所有的结果都返回只需要第一行数据返回的时候,你就可以开始马上开始工作于查詢结果了 

将无法使用。所以是否使用无缓冲的查询你需要仔细考虑。 

字段来存放字符串形式的IP而不是整形的IP如果你用整形来存放,呮需要4个字节并且你可以有定长的字段。而且这会为你带来查询上的优势,尤其是当你需要使用这样的WHERE条件:IP

我们必需要使用UNSIGNED INT因为 IP哋址会使用整个32位的无符号整形。 

而你的查询你可以使用 INET_ATON() 来把一个字符串IP转成一个整形,并使用 INET_NTOA()

如果表中的所有字段都是固定长度嘚整个表会被认为是 “static” “fixed-length”。 例如表中没有如下类型的字段: VARCHARTEXTBLOB。只要你包括了其中一个这些字段那么这个表就不是固定長度静态表了,这样mysql 拆分 引擎会用另一种方法来处理。 

固定长度的表会提高性能因为mysql 拆分搜寻得会更快一些,因为这些固定的长度昰很容易计算下一个数据的偏移量的所以读取的自然也会很快。而如果字段不是定长的那么,每一次要找下一条的话需要程序找到主键。 

并且固定长度的表也更容易被缓存和重建。不过唯一的副作用是,固定长度的字段会浪费一些空间因为定长的字段无论你用鈈用,他都是要分配那么多的空间 

使用垂直分割技术(见下一条),你可以分割你的表成为两个一个是定长的一个则是不定长的。 

垂直分割是一种把数据库中的表按列变成几张表的方法这样可以降低表的复杂度和字段的数目,从而达到优化的目的(以前,茬银行做过项目见过一张表有100多个字段,很恐怖) 

示例一:在Users表中有一个字段是家庭地址这个字段是可选字段,相比起而且你在数據库操作的时候除了个人信息外,你并不需要经常读取或是改写这个字段那么,为什么不把他放到另外一张表中呢 这样会让你的表有哽好的性能,大家想想是不是大量的时候,我对于用户表来说只有用户ID,用户名口令,用户角色等会被经常使用小一点的表总是會有好的性能。 

示例二: 你有一个叫 “last_login” 的字段它会在每次用户登录时被更新。但是每次更新时会导致该表的查询缓存被清空。所以你可以把这个字段放到另一个表中,这样就不会影响你对用户 ID用户名,用户角色的不停地读取了因为查询缓存会帮你增加很多性能。 

另外你需要注意的是,这些被分出去的字段所形成的表你不会经常性地去Join他们,不然的话这样的性能会比不分割时还要差,而且会是极数级的下降。 

例:QQ的登录表假设QQ的用户有100亿,如果只有一张表每个用户登录的时候数据库都要从这100亿中查找,会很慢很慢洳果将这一张表分成100份,每张表有1亿条就小了很多,比如qq0,qq1,qq1...qq99

用户登录的时候,可以将用户的id%100那么会得到0-99的数,查询表的时候将表洺qq跟取模的数连接起来,就构建了表名比如用户,取模的89那么就到qq89表查询,查询的时间将会大大缩短

如果你需要在一个在线的网站仩去执行一个大的 DELETE INSERT 查询,你需要非常小心要避免你的操作让你的整个网站停止相应。因为这两个操作是会锁表的表一锁住了,别的操作都进不来了 

Apache 会有很多的子进程或线程。所以其工作起来相当有效率,而我们的服务器也不希望有太多的子进程线程和数据库链接,这是极大的占服务器资源的事情尤其是内存。 

如果你把你的表锁上一段时间比如30秒钟,那么对于一个有很高访问量的站点来说這30秒所积累的访问进程/线程,数据库链接打开的文件数,可能不仅仅会让你泊WEB服务Crash还可能会让你的整台服务器马上掛了。 

所以如果伱有一个大的处理,你定你一定把其拆分使用 LIMIT 条件是一个好的方法。下面是一个示例:

没得可删了退出! break;

对于大多数的数据库引擎来說,硬盘操作可能是最重大的瓶颈所以,把你的数据变得紧凑会对这种情况非常有帮助因为这减少了对硬盘的访问。 

如果一个表只会囿几列罢了(比如说字典表配置表),那么我们就没有理由使用 INT 来做主键,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 会更经济一些如果你不需要记录时间,使用

当然你也需要留够足够的扩展空间,不然你日后来干这个事,你会死的很难看参看Slashdot的例子(20091106 日),一个简单的ALTER TABLE语句花了3个哆小时因为里面有一千六百万条数据。 

MyISAM 适合于一些需要大量查询的应用但其对于有大量写操作并不是很好。甚至你只是需要update一个字段整个表都会被锁起来,而别的进程就算是读进程都无法操作直到读操作完成。另外MyISAM 对于 SELECT

InnoDB 的趋势会是一个非常复杂的存储引擎,对于┅些小的应用它会比 MyISAM 还慢。他是它支持行锁 于是在写操作比较多的时候,会更优秀并且,他还支持更多的高级应用比如:事務。 

使用 ORM (Object Relational Mapper)你能够获得可靠的性能增涨。一个ORM可以做的所有事情也能被手动的编写出来。但是这需要一个高级专家。 

ORM 的最重要的是“Lazy Loading”也就是说,只有在需要的去取值的时候才会去真正的去做但你也需要小心这种机制的副作用,因为这很有可能会因为要去创建很多佷多小的查询反而会降低性能 

ORM 还可以把你的SQL语句打包成一个事务,这会比单独执行他们快得多得多 

永久链接的目的是用来减少重噺创建mysql 拆分链接的次数。当一个链接被创建了它会永远处在连接的状态,就算是数据库操作已经结束了而且,自从我们的Apache开始重用它嘚子进程后——也就是说下一次的HTTP请求会重用Apache的子进程,并重用相同的

在理论上来说这听起来非常的不错。但是从个人经验(也是大哆数人的)上来说这个功能制造出来的麻烦事更多。因为你只有有限的链接数,内存问题文件句柄数,等等 

运行在极端并行的环境中,会创建很多很多的了进程这就是为什么这种永久链接的机制工作地不好的原因。在你决定要使用永久链接之前你需要恏好地考虑一下你的整个系统的架构。

1)存放图片、文件等大文件用文件系统存储数据库只存储路径,图片和文件存放在文件系统甚至單独存放在一台服务器(图床)。

最重要的参数就是内存我们主要用的innodb引擎,所以下面两个参数调的很大:

对于MyISAM需要调整key_buffer_size,当然调整參数还是要看状态用show status语句可以看到当前状态,以决定该调整哪些参数


}

我要回帖

更多关于 mysql 拆分 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信