SpringCloud、集合多线程、缓存、消息队列、分布式项目开发以来遇到的各种坑与填坑。日常更新

docker pull astonika/hadoop

新做的Ubuntu下的Hadoop镜像下拉使用。 Astonika的邮箱 [email protected] [email protected]

有时候MySQL数据库cpu占用或io会飙升超过100%,一般原因大概是有查询或大批量的插入导致的。

解决方法:这时候用列出所有进程 show processlist,观察所有进程 ,多秒没有状态变化的(干掉),然后查看超时日志或者错误日志。

超过100台MySQL时用puppet 安装配置管理集群啊,其他dsh

用lepus做数据库监控,查询慢日志,另外还有zabbix可用。

volatile关键字 是JVM线程栈缓存失效穿透情况。

Docker 虚时问题 容器时间不对 差8个小时 是因为容器用的是东一区时间

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

或 不在编写Dockfile时 已在容器中时用 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 复制时区配置解决。

SpringCloud服务注册与发现、消费、断路、路由、高可用分布式配置、消息总线、服务链路追踪等

 

Java锁类型:内置锁(Instrinsic Lock)

 

Sql优化各种方法:

explain出来的各种item的意义;
select_type
表示查询中每个select子句的类型
type
表示MySQL在表中找到所需行的方式,又称“访问类型”
possible_keys
指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
key
显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL
key_len
表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
ref
表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
Extra
包含不适合在其他列中显示但十分重要的额外信息
(2)、profile的意义以及使用场景;
查询到 SQL 会执行多少时间, 并看出 CPU/Memory 使用量, 执行过程中 Systemlock, Table lock 花多少时间等等。

 

MySQL数据库大数据量,高增加改动量优化规则:

a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
c. mysql库主从读写分离。
d. 找规律分表,减少单表中的数据量提高查询速度。
e。添加缓存机制,比如memcached,apc等。
f. 不经常改动的页面,生成静态页面。
g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

锁的优化策略

1. 读写分离

2. 分段加锁

3. 减少锁持有的时间

4. 多个线程尽量以相同的顺序去获取资源

不能将锁的粒度过于细化,不然可能会出现线程的加锁和释放次数过多,反而效率不如一次加一把大锁。

索引的底层实现原理和优化

B+树,经过优化的B+树

主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此InnoDB建议为大部分表使用默认自增的主键作为主索引。

还有什么情况下设置了索引但无法使用

1.以“%”开头的LIKE语句,模糊匹配

2. OR语句前后没有同时使用索引

3. 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型)

实践中优化MySQL最佳优化顺序:

1.SQL语句及索引的优化

2. 数据库表结构的优化

3.系统配置的优化

4.硬件的优化

 

优化数据库的方法

  1. 选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置NOTNULL,例如’省份’、’性别’最好适用ENUM
  2. 使用连接(JOIN)来代替子查询
  3. 适用联合(UNION)来代替手动创建的临时表
  4. 事务处理
  5. 锁定表、优化事务处理
  6. 适用外键,优化锁定表
  7. 建立索引
  8. 优化查询语句

mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能的影响(读写两方面):

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。

 

普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。

 

主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。

索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引,这就是联合索引。

 

索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章