设为首页 收藏本站
查看: 582|回复: 0

[经验分享] mysql一些知识点整理

[复制链接]

尚未签到

发表于 2016-9-20 11:21:07 | 显示全部楼层 |阅读模式
mysql数据库事务之间的隔离级别

  • READ UNCOMMITTED-事务可以查看其它未提交事务的执行结果,很少用于生产环境,性能也不比其它隔离级别高多少。读取未提交的结果称为“脏读”
  • READ COMMITTED-事务可以查看其它已提交事务的执行结果,大多数数据库(除了mysql)都是采用这个默认隔离级别。不可重复读(用户重复查询两次之间别的事务可能已提交导致查询结果不一致)
  • REPEATABLE-可重复读,同一个事务的不同实例并发读取会得到同样的结果,但是存在幻读的情况。mysql用MVCC机制消除这种情况
  •   SERIALIZABLE-最高隔离级别,强制事务排序,性能低下,存在大量超时情况和锁。
MVCC多版本并发控制
  工作原理是保留数据在某个时间点的快照,不同的存储引擎实现方式不一样。innodb对每行数据存储额外的两个隐藏字段记录数据行创建时间以及删除时间。(MVCC仅仅对READ COMMITED和REPEATABLE两种隔离级别有效)下面看看repeatable的实现

  • SELECT-行的版本号必须早于或等于事务版本号(事务开始前已创建或由事务创建);数据航删除版本号必须是undefined或者大于事务版本号
  • INSERT-innodb指定插入行的版本号为系统当前版本号
  • DELETE-指定行的删除版本号为当前系统版本号
  • UPDATE-创建一个新的数据航拷贝,使用当前版本号作为新数据行的创建标识和旧数据行的删除标识
数据类型选型原则

  • 越小越好-尽量使用能存储数据的最小的数据类型,由于使用更小的磁盘空间,占用更少的内存和cpu缓存,花费更少的cpu周期处理
  • 保持简单-使用整型数据而不是字符串做比较,使用内置日期时间类型存储而不要用字符串存储时间,使用整型存储ip地址等
  • 尽量避免NULL值-将列定义为not null,mysql不能对null的列做优化,而且null的列使用更多存储空间需要mysql内部特殊处理,当允许null值的字段做索引时,会引入额外花销。如果实在需要使用null,则可以考虑用0或者一个特殊值或者一个空字符串代替。(使用not null带来的性能提升不是很明显,所以数据表已经设计好后就不要专门为这个做修改了)
  • ...
数据库基准测试(benchmark)
 有两种基本的测试策略:测试整个系统(应用程序)和单独测试数据库mysql
测试整个系统能关注整个系统运行状况,mysql常常不是一个系统的瓶颈(工具有ab,http_load等)。当然如果你想测试某个存储引擎或者设计模式的性能,就需要单独测试数据库,测试的时候需要设计自己关注的目标点——比如每个时间单位执行事务数目,响应时间延时,可扩展性,不同负载下数据库的表现,并发度,对磁盘IO负载高低等,工具有mysqlslap等
 
MyISAM存储引擎
有不错的性能表现和丰富的特性如下:
锁机制(表级锁而非行级,读获取共享锁,写获取排他锁,通过concurrent inserts实现并发控制)
自动修复表错误
手动修复CHECK TABLE mytable或REPAIR TABLE mytable或者使用myisamchk工具
支持全文索引
延迟写入Delayed key writes
各种引擎比较
DSC0000.jpg
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-274937-1-1.html 上篇帖子: MYSQL 数据类型(转) 下篇帖子: mysql TableMap id递增问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表