连接池设置及影响 MySQL 如何处理连接? 每次客户端向数据库服务器请求一个连接,服务器根据用户名密码在已有连接内查找一个相同配置的连接,分配给请求。如果找不到,则数据库分配一个新连接给当前请求。 分配新连接做哪些工作 ? MySQL 新开一个连接,就会创建一个新的 mysql 结构体,其中包括 Join_buffer 、 Sort_buffer 和一个 Session 变量存储数组。 如果连接数过多会怎么样 ? 如果连接 MySQL 的线程太多,那么每个线程分配到的 join_buffer+sort_buffer 总量就会很大,占用大量内存。 如何设置连接池 ? 建议最小值和最大值差距不要太大,避免连接反复的创建和释放,带来 CPU 开销。如果连接数一直比较平稳的应用,则最小值和最大值在平均线附近设置即可。如果连接数长期较高,则最小值也设置大一些。如果连接数长期较低,则最大值偏小设置。
10.
应用程序实现 JOIN 如果需要跨主机进行JOIN ,跨应用进行 JOIN ,或者数据库不能获得较好的执行计划,都可以自己通过程序来实现 JOIN 。 例如: SELECT a.*,b.* FROM a,b WHERE a.col1=b.col1 AND a.col2> 10 ORDER BY a.col2; 可以利用程序实现,先 SELECT * FROM a WHERE a.col2>10 ORDER BY a.col2;--(1) 利用 (1) 的结果集,做循环, SELECT * FROM b WHERE b.col1=a.col1; 这样可以避免排序,可以在程序里控制执行的速度,有效降低数据库压力,也可以实现跨主机的 JOIN 。 《 内连接实现例子 》 《 外连接实现例子 》
HA 与海量数据方案 Heartbeat方案 :利用 Heartbeat 管理 VIP ,利用 crm 管理 MySQL , MySQL 进行双 M 复制。( Linux 系统下没有分库的标准方案) LVS+Keepalived 方案 :利用 Keepalived 管理 LVS 和 VIP , LVS 分发请求到 MySQL , MySQL 进行双 M 复制。( Linux 系统下无分库无事务的方案) Cobar 方案 :利用 Cobar 进行 HA 和分库,应用程序请求 Cobar , Cobar 转发请求道数据库。(有分库的标准方案, Unix 下唯一方案)
13.
复制搭建方法 搭建复制的必备条件:复制的机器之间网络通畅, Master打开了 binlog 。 搭建复制步骤 : 1. 创建复制账户: GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY‘xxx'; 2. SHOW MASTER STATUS; 记录下 File 和 Postion 。 3. 在 Slave 上 CHANGE MASTER TO master_host=‘IP‘, master_user='repl', master_password=‘xxx’, master_log_file='mysql-bin.00000x', master_log_pos=pos; 4. Slave 上执行 Slave start 开始复制。