mysql开机报错 high_Mysql High Performance:Advanced Feature 3

User-Defined Functions

1. 满足c调用规则的任何语言,编译后连接入server

2. 很快,能访问大量操作系统的功能

视图

1. mysql有两种算法返回数据:merge、tempTable

merge:原始表中的数据与返回数据是一对一

tempTable:有聚合、groupBy、distinct、Union等;derived table

2. 更新视图:会更新原始的base table

如果包含聚合、groupBy、distinct等不可更新

check option:保证更新的数据符合建view时where条件,否则报错

3. view的性能

Mysql中view确实可以改善性能

为每个user建个view

列的安全性:将希望对外访问的列做成public view

使用view时要benchmark,其实view并不简单,它隐藏了复杂性,创建它可能引用了其他表或视图

4. view的局限性

不支持物化视图

不支持indexed view

不保存原始的view sql,使用show create view查看到得是复杂的内部处理后的格式

Character Sets and Collations

1. Character Sets是如何解析二进制编码; Collations是cs的一系列排序规则

2. 4.1后,任何Character-base的value都有一个Character Set and Collation

3. Character-base的value可以是列的值,query中的文本,表达式的结果,用户变量等

4. 每个server、database、table都有默认的cs,character_set_server:如果没有显式声明db、table、column分别继承上面的

5. client/server通讯:character_set_client、character_set_connection、character_set_result

SET NAMES、SET CHARACTER SET可修改三者

客户端连接的cs需要和character_set_client一致:php中使用mysql_set_charset()修改

6. mysql比较两个value,先将它们转化为同样的cs,如果不能报ERROR 1267 (HY000): Illegal mix of collations

7. 不同的选择会影响性能

Full-text Searching

1. 只有MyISAM支持Full-text indexing:使用full-text collection,吧字符列连接起来作为一个大字符串做index

两层的b-tree:第一层key word 第二层list of document pointers指向包含keyword的full-text collections

keyword不包含:stopword和ft_min_word_len/ft_max_word_len之外的

2. 两种:Natural-Language、Boolean

3. 更容易出碎片

--没有多做研究,写的很深 看不懂

外键限制

1. 现在主要支持的engine是InnoDB

2. 会锁其他的表,insert子表,会锁主表(没有delete)

3. 如果确实需要检查,由server来做能提高性能

4. 可使用trigger达到目的

Merge table和Partition

1. Merge table将多个MyisAM表合成一个virtual table

2. 分区表底层是将数据分多个表存放,有自己index

3. partition 5.1引入,Merge很久了

4. 优点

分开静态和有变动的数据

使用物理存储接近的方式存储相关数据,优化查询

设计表,让query查询更少数据

维护大的数据卷更方便

5. drop mergeTable子表不影响;drop子表,子表没了,但是文件还在merge表还可以用

6. mergeTable对性能的影响

?需要更多的open file descriptors:即使你配置了table cache避免超出OS的per-process file-descriptor limits,mt也可能会超

create语句不会校验是否兼容:两个table定义不同,使用时会报ERROR 1168 (HY000): Unable to open underlying table which is differently defined or of non-MyISAM type or doesn’t exist.

访问mt的query实际会查两个表,可能比访问一个表慢:范围查询影响比单个查询小;表扫描一样快;pk和unique key找到就返回;按create顺序访问子表

7. mt的优点

在数据一部分不活跃一部分活跃时,可以灵活控制:log,将旧数据移除mt

数据仓库常用到:一个表维护t级别的数据不现实,但是可以几个50G级别的表;purge旧数据用delete也很慢

对on-the-fly-table很好用,创建删除的成本很低

8. pt:与mt很像,但是一行只能存于一个partition

优点:可以确定哪些数据在那个partition;数据易于维护;数据可以物理分开;使用多硬盘更有效

缺点:

所有分区使用同一种engine

访问一个分区也会锁all partition

分区方法很少

一些engine不支持

不支持外键

不支持 load index into cache

优化器会分辨出和分区key相关的查询条件,自动使用匹配的分区查询

Distributed (XA) Transactions

1. 5.0后,部分支持分布式事务

2. 需要一个协调者,要求所有参与者准备commit,phase1;所有的参与者都ready,通知大家commit,phase2

3. 内部外部两种

4. 内部协调engine和binary logging

5. 外部

可以参与 但不能管理xa

并不是完全支持xa:xa要求connection合并入一个事务,但是5.1还做不到

最好避免xa,wan环境下网络不可知

对性能要求不高可以用xa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值