mysql 绑定变量, query cache
其实MySQL中有内存表了, 完全可以不用这个功能. 对于Query Cache, MySQL提供了query_cache_type变量来控制发送到数据库的SQL是否进行Cache, 有三个值:
0, 对SQL语句不进行Cache.
1, 对于有SQL_NO_CACHE提示的SQL不进行Cache.
2, 仅对于有SQL_CACHE进示的SQL进行Cache.

新版的PHP5提供的接口mysqli支持Bound Parameters,mysql版本需要4.1以上,例子:
    代码:

<%php
        $mysqli = new mysqli('localhost', 'user', 'password', 'world');
        $stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
        $stmt->bind_param('sssd', $code, $language, $official, $percent);

$code = 'DEU';
        $language = 'Bavarian';
        $official = "F";
        $percent = 11.2;

/* execute prepared statement */
        $stmt->execute();
        %>

mysql的存储过程,临时变量用@
存储过程,mysql5及以后declare的变量支持作用范围,范围可以小到一个begin end(全局和局部可以声明同样的变量名)

系统数据字典: INFORMATION_SCHEMA库和mysql库中
支持Event Scheduler

innoDB支持事务,支持行级锁(必须有索引才能行级锁),行级锁有开销(与oracle不同),开销大(与MyiSAM相比)
innoDB用于OLTP,并发好
innoDB采用表空间存储,支持分区Partitioning

innodb_flush_log_at_trx_commit 如果事务要求不是非常严格的话, 设为0或2可以上百倍提高insert update的并发数量

myisam单表order by的字段有索引的情况下, 还是会using filesort
innodb不会

mysql 5.1 分区表不支持唯一索引

主从之间用复制, 相同的主之间用DRBD, 不同的主之间用sharding或分区表
sharding比分区表好, 没有单点风险, 价格低廉
sharding: http://www.dbanotes.net/database/database_sharding.html

InnoDB不支持在一个数据表里使用复合索引来生成多个互不干扰的序列编号

查询where中有a和b两个字段,建复合索引index(a,b),比在a、b上分别建索引要快
复合索引有时也适合用于第一个字段的查询

复合索引左前缀性:必须用到索引的第一个字段
索引前缀性:只能like '1%',不能like '%1'
在字段前加了函数,则索引会被抑制

对innoDB执行 select count(*) from table_name的时候,后面跟一个where 索引字段> ,会快很多
use 'multiple-row INSERT'
范围型select会引起Next-Key Locking
InnoDB支持多版本读(很好, 很强!!!)
InnoDB, for upate和lock in share mode用于行级锁和表级共享锁


innoDB数据恢复工具: http://code.google.com/p/innodb-tools/wiki/InnodbRecoveryHowto

(
innodb_buffer_pool_size越大越好,官方推荐使用物理内存的50%-80%
innodb_flush_method=O_DIRECT是必须的,而innodb_log_file_size也不宜太大
见 MySQL InnoDB性能调整的一点实践
)
 
mysql备份 导出(mysqldump很快):
方法一 (不能支持sql语句):
mysqldump -h127.0.0.1 -P3306 -uroot -proot -t --default-character-set=UTF8 db_name table_name > bak.sql
(mysqldump支持MyISAM和InnoDB, 可以备份单个表、单个库或所有库)
方法二 (不能支持分隔符、换行符等):
mysql -h127.0.0.1 -uroot -proot --default-character-set=UTF8 db_name -r -N -e "select * from table_name" > bak.sql
方法三 (不能支持在第一行包含字段名称):
select * into outfile 'bak.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table_name;
方法四 (方法三的改进):
(select 'col1','col2') union all (select col1,col2 FROM table_name into outfile 'data.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n');

mysql还原 导入(Load Data Local InFile很快):
mysql -h127.0.0.1 -uroot -proot --default-character-set=UTF8 db_name -e "LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE table_name Fields TERMINATED BY '\t' ENCLOSED BY '\"' LINES TERMINATED BY '\n' (id,name)"
mysql -u root -p db_name < 文件
InnoDB引擎可以通过binlog还原到时间点


由于spring连接池每次执行sql不一定是同一个连接, 所以写了一个通用存储过程:

drop procedure if exists add_and_return_insert_id;
delimiter ?
create procedure add_and_return_insert_id(s text)
begin
DECLARE stmt text;
set @sqlstr=s;
prepare stmt from @sqlstr;
execute stmt;
select LAST_INSERT_ID();
end?
delimiter ;

存储过程中的事务:

只有oracle高级, 存储过程 触发器默认级别就是 事务级的, SQL Server 2005开始也有了try...catch的功能
mysql可能只能通过每个语句后面用select @error来判断, 不是null就执行rollback; 否则最后执行commit;

转载于:https://blog.51cto.com/xu20cn/79358

aaron note mysql相关推荐

  1. mysql aborted connects_[mysql] [note] mysql 报错Aborted connection

    Aborted connection报错一般分两种, 1)Got an error reading communication packets,基本是网络等原因导致. 2)Got  timeout  ...

  2. mysql超时失效c3p0_解决c3p0和MySQL集成情况下,连接长时间闲置后重新使用时报错的问题...

    MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效.在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话, ...

  3. MySQL下载与MySQL安装图解(MySQL5.7与MySQL8.0)

    MySQL下载与MySQL安装图解(MySQL5.7与MySQL8.0) 1.MySQL下载(MySQL8.0社区版) mysql下载方法,请根据风哥以下步骤与图示来下载mysql8.0最新社区版本: ...

  4. Windows系统MySQL安装配置

    MySQL是一个开放源代码的数据库管理系统,是由MySQL AB公司开发.发布并支持的,现在属于Oracle旗下产品. 与其他大型数据库管理系统如Oracle.DB2.SQL Server等相比,虽然 ...

  5. mysql 自动停止_MySQL数据库之mysql自动停止的完美解决方法

    本文主要向大家介绍了MySQL数据库之mysql自动停止的完美解决方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 这两天新买的服务器mysql总是自动停止,查了日志 9:1 ...

  6. 聊一聊Elasticsearch和MySQL的常用操作

    前言 ElasticSearch,开源的搜索和数据分析引擎,也是名列前茅的 nosql. 很多时候会想拿它和关系型数据库做对比,严格上它们是没有太多可比性的. 不过把有的东西放在一起比较,会帮助我们快 ...

  7. mysql异常恢复工具_[MySQL异常恢复]mysql ibd文件恢复

    在mysql中由于某种原因保存有ibd文件,但是表已经被删除或者frm文件损坏亦或者ibdata文件损坏/丢失等.本文模拟在这种情况下,通过mysql自身技术即可完成ibd文件恢复. 测试环境mysq ...

  8. 解决 c3p0 和 MySQL 集成情况下,连接长时间闲置后重新使用时报错的问题

    MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效.在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话, ...

  9. lnmp mysql 自动关闭_mysql总是自动停止 日志提示Plugin ‘FEDERATED’ is disabled的解决办法...

    服务器环境LNMP Centos6.5 64位, 这两天新买的服务器MySQL总是自动停止,查了日志 9:13:57 [Note] MySQL: Normal shutdown 9:13:57 [No ...

最新文章

  1. websecurity - Web Security Testing Framework 超级牛B扫描器
  2. swift 中showAlertTitle的使用
  3. 弃Java、Swift于不顾,为何选Python?
  4. 语音识别、传统语音识别、带权有限转态转换器、深度语音识别、时序分类、CTC解码
  5. 末学者daylight__Linux磁盘管理及LVM
  6. 安装keras and theano于google colab上
  7. 人脸识别撞脸名画_与名画“撞脸”火爆数博会 观众直呼“太好玩”【高清组图】...
  8. wifi的基础知识及原理1
  9. c++入门之——const在函数名前面和函数后面的区别
  10. 区块链 matlab,matlab可以实现区块链吗?
  11. jquery-jquery对向与dom标签对向
  12. 盘口的买一是卖股票还是买股票?
  13. 杂谈--穷人和富人的区别(觉得很有道理,需要反思自己的日常行为)
  14. 高斯-赛得尔迭代式 c++_高斯混合模型(聚类、密度估计)
  15. 我们现在不再需要杀毒软件了吗?
  16. 文献管理软件工具讲解-------阿冬专栏!!!
  17. 原生JS实现自定义滚动条
  18. win10 php开发环境搭建
  19. 微信小程序 MinUI 组件库系列之 badge 徽章组件
  20. f文件服务器,f文件服务器

热门文章

  1. 查询速度至少为160MHz的PC的制造商
  2. 杜邦接口还有一个跟他相反的叫什么_日本新晋网红“Imma”出道,虚拟技术还能玩出什么花样?...
  3. 欧拉操作系统(openEuler)简介
  4. linux下QQ如何使用
  5. 效果图底图 线框图_线框图初学者指南
  6. 苹果电脑macbookpro清理垃圾软件 mac系统免费清洁
  7. ceph s3cmd上传文件时报错: ERROR: S3 error: 416 (InvalidRange)
  8. Qt开发技术:Q3D图表开发笔记(二):Q3DBar三维柱状图介绍、Demo以及代码详解
  9. UWB无线精准定位技术,超宽带测距通信交互,实时厘米级精度应用
  10. 时间轴_windows操作系统