Most Helpful Girl
This may sound crazy, but I actually just had to deal with the exact same situation until I broke it off 2 weeks ago. I gave a lot in the relationship as well, like I was always there for him and trying to cheer him up ( he suffers from clinical depression so he was always insecure and needy-like). My parents hated the guy because he was an awful influence on a girl like me. For 2 months I got into endless fights with my mother about keeping him. I was so blinded by this feeling of infatuation for him that I neglected to see the fact that I had given way more in the relationship than any amount he could have ever given me. All he gave me were some cute memories and that's it. For 2 months I hated my parents because they would always tell me how bad he was for me and how he was dragging me and my self-esteem down. Plus, not to mention, he was clingy and was jealous of me hanging out with other guy friends. I didn't want to break up with him because I wanted to feel something more. At night, I would think about all the cute and cuddly moments we'd have together at school the next day, but my visions never really came true. At least not when it mattered. The day I broke up with him was the day I realized that the guy who said he loved me, and the guy I thought I loved, really had no consideration for me and my own well-being when his issues suddenly became way more important than what i had been going through. That was the day I broke up with him. Since then, I re-gained a close relationship with my parents, and I realize now how silly I was to not break up with him earlier. The sooner you break up with someone, the easier it is to get over it.
I get that you're afraid of being lonely, but trust me when i say that you will find someone new. it's obvious that she's not making you happy anymore, and it's time for a change. After you do it, you're gonna feel relieved. Not gonna lie, sometimes I think about getting back with him, but I'm so much better off now... plus i'm back on the market so it's not too lonely.
Personally, i think the best time to break up with her is during one of her fits, or when you're feeling unhappy, because then at that point there's no going back and your wanting to break up becomes completely justifiable.
(P. S. this girl seems really dumb to ruin a relationship with someone as sweet and caring as you. I honestly probably wouldn't have broken up with my boyfriend had he bought me a puppy or even just got me lunch).